2016-06-21 6 views
3

캡션을 받고 싶습니다. 특정 사용자의 최근 10 개의 이미지에 대한 좋아요 및 댓글을 아래 코드를 사용하면 최신 버전을 구할 수 있습니다.파이썬에서 긁기

코드 :

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']) 

결과 : LAST CALL : 오늘의 마감하기 전에이 여름 오바마 대통령을 만날 수있는 기회를 입력합니다. → 프로필에 링크하십시오.

답변

3

아래 코드에서는 첫 번째 노드 (첫 번째 이미지) 만 검색하고 있습니다.

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

최근 10 개의 사용자 이미지 정보를 얻으려면 대신이 방법을 사용해보세요.

recent_ten_nodes = result['entry_data']['ProfilePage'][0]['user']['media']['nodes'][:10] 

캡션 만 인쇄하면 좋아요 수와 댓글 수가 줄어 듭니다.

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

이러한 값을 저장하는 방법은 저장 방법을 결정해야합니다.

+0

받기 : TypeError : 목록 색인은 str이 아닌 정수 여야합니다. – Ravi

+0

불량합니다. 내 대답을 편집했습니다. 업데이트 된 답변이 작동하는지 알려주세요 :) –

+0

감사합니다. 완벽하게 작동합니다. – Ravi