2016-06-21 10 views
3

Ich wollte die Bildunterschrift bekommen, nein. von Likes und Kommentaren der letzten 10 Bilder eines bestimmten Benutzers. Mit dem unten stehenden Code kann ich nur das Neueste bekommen.Scraping on Python

Code:

from selenium import webdriver 
from bs4 import BeautifulSoup 
import json, time, re 
phantomjs_path = r'C:\Users\ravi.janjwadia\Desktop\phantomjs-2.1.1-windows\bin\phantomjs.exe' 
browser = webdriver.PhantomJS(phantomjs_path) 
user = "barackobama"  
browser.get('https://instagram.com/' + user) 
time.sleep(0.5) 
soup = BeautifulSoup(browser.page_source, 'html.parser') 
script_tag = soup.find('script',text=re.compile('window\._sharedData')) 
shared_data = script_tag.string.partition('=')[-1].strip(' ;') 
result = json.loads(shared_data) 
print(result['entry_data']['ProfilePage'][0]['user']['media']['nodes'][0]['caption']) 

Ergebnis: LAST CALL: Geben Sie für eine Chance, Präsident Obama in diesem Sommer vor heute Abend Frist einzuhalten. → Im Profil verlinken.

Antwort

3

In Ihrem Code unten erhalten Sie nur den ersten Knoten (der das erste Bild ist).

print(result['entry_data']['ProfilePage'][0]['user']['media']['nodes'][0]['caption']) 

Um die Informationen der letzten 10 Bilder des Benutzers zu erhalten versuchen Sie dies stattdessen.

Um nur die Beschriftungen, Anzahl der Likes und Kommentare zu drucken, tun Sie dies.

for node in recent_ten_nodes: 
    print node['caption'] 
    print node['likes']['count'] 
    print node['comments']['count'] 

Zum Speichern dieser Werte müssen Sie selbst entscheiden, wie Sie diese speichern möchten.

+0

Getting this: TypeError: Liste Indizes müssen Ganzzahlen sein, nicht str – Ravi

+0

Mein schlechtes. Ich habe meine Antwort bearbeitet. Lass es mich wissen, wenn die aktualisierte Antwort funktioniert :) –

+0

Danke. Es funktioniert perfekt – Ravi