скрести сайты с бесконечной прокруткой
Я написал много скребков, но я не совсем уверен, как обращаться с бесконечными скроллерами. В наши дни большинство веб-сайтов и т. д., Facebook, Pinterest имеют бесконечные скроллеры.
3 ответа:
Вы можете использовать selenium, чтобы избавиться от бесконечного прокрутки веб-сайта, такого как twitter или facebook.
Шаг 1: Установите Selenium с помощью pipШаг 2: Используйте приведенный ниже код для автоматизации бесконечной прокрутки и извлечения исходного кодаpip install selenium
Шаг 3: при необходимости распечатайте данные.from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.webdriver.support.ui import WebDriverWait from selenium.common.exceptions import TimeoutException from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoAlertPresentException import sys import unittest, time, re class Sel(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "https://twitter.com" self.verificationErrors = [] self.accept_next_alert = True def test_sel(self): driver = self.driver delay = 3 driver.get(self.base_url + "/search?q=stckoverflow&src=typd") driver.find_element_by_link_text("All").click() for i in range(1,100): self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(4) html_source = driver.page_source data = html_source.encode('utf-8') if __name__ == "__main__": unittest.main()
Большинство сайтов с бесконечной прокруткой (как отмечает Lattyware) также имеют правильный API, и вы, вероятно, будете лучше обслуживаться с помощью этого, а не выскабливания.
Но если вы должны скрести...
Такие сайты используют JavaScript для запроса дополнительного контента с сайта, когда вы достигаете нижней части страницы. Все, что вам нужно сделать, это выяснить URL этого дополнительного контента, и вы можете получить его. Выяснение требуемого URL-адреса может быть сделано путем проверки скрипта, путем с помощью веб-консоли Firefox или с помощью прокси-сервера отладки .
Например, откройте веб-консоль Firefox, выключите все кнопки фильтра, кроме Net, и загрузите сайт, который вы хотите очистить. Вы увидите все файлы по мере их загрузки. Прокрутите страницу во время просмотра веб-консоли, и вы увидите URL-адреса, используемые для дополнительных запросов. Затем вы можете запросить этот URL самостоятельно и посмотреть, в каком формате находятся данные (возможно, JSON), и получить их в свой скрипт Python.