2016-06-21 6 views
3

Я хотел получить подпись, нет. из понравившихся и комментариев последних 10 изображений конкретного пользователя. Используя нижеприведенный код, я просто могу получить последнюю версию.Скребок на Python

Код:

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

My bad. Я отредактировал свой ответ. Дайте мне знать, если работает обновленный ответ :) –

+0

Спасибо. Прекрасно работает – Ravi

Смежные вопросы