Как очистить Instagram с BeautifulSoup
Я хочу соскрести фотографии с публичного аккаунта Instagram. Я довольно хорошо знаком с bs4, поэтому я начал с этого. Используя инспектор элементов в Chrome, я заметил, что картинки находятся в неупорядоченном списке, а у Ли есть класс "Фото", поэтому я подумал, что, черт возьми, не так уж трудно наскрести с помощью findAll, верно?
Неправильно: он ничего не возвращает (код ниже), и вскоре я замечаю, что код, показанный в инспекторе элементов, и код, который я извлек из запросов, не были одинаковыми АКА нет неупорядоченного списка в коде, который я вытащил из запросов.
Есть идеи, как я могу получить код, который появляется в инспекторе элементов?
Просто для протокола, это был мой код для запуска, который не работал, потому что неупорядоченный список отсутствовал:
from bs4 import BeautifulSoup
import requests
import re
r = requests.get('http://instagram.com/umnpics/')
soup = BeautifulSoup(r.text)
for x in soup.findAll('li', {'class':'photo'}):
print x
Спасибо за вашу помощь.1 ответ:
Если вы посмотрите на исходный код страницы, вы увидите, что некоторые javascript генерируют веб-страницу. То, что вы видите в браузере элементов-это веб-страница после запуска скрипта, и beautifulsoup просто получает html-файл. Для того, чтобы проанализировать отрисованную веб-страницу, вам нужно будет использовать что-то вроде Selenium, чтобы отрисовать веб-страницу для вас.
Так, например, это выглядело бы с селеном:
Теперь суп должен быть таким, как вы ожидаете.from bs4 import BeautifulSoup import selenium.webdriver as webdriver url = 'http://instagram.com/umnpics/' driver = webdriver.Firefox() driver.get(url) soup = BeautifulSoup(driver.page_source) for x in soup.findAll('li', {'class':'photo'}): print x