CoderCastrov logo
CoderCastrov
Питон

Парсинг бесконечно прокручиваемых веб-страниц с помощью Python — 2 разных подхода (JavaScript и клавиши)

Парсинг бесконечно прокручиваемых веб-страниц с помощью Python — 2 разных подхода (JavaScript и клавиши)
просмотров
1 мин чтение
#Питон
Table Of Content

    Парсинг веб-страниц с бесконечной прокруткой может быть увлекательным. В этой статье рассматриваются два метода для прокрутки динамического контента на веб-страницах, таких как Twitter. Обратите внимание, что приведенный ниже код не выполняет парсинг данных, так как он служит только для образовательных целей по обработке бесконечной прокрутки.

    Если вы используете Google Colab, убедитесь, что вы сначала установили веб-драйвер selenium. Вот необходимая часть перед началом;

    !pip install selenium
    !apt-get update # для обновления Ubuntu для правильной работы apt install
    !apt install chromium-chromedriver
    !cp /usr/lib/chromium-browser/chromedriver /usr/bin
    import sys
    sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')
    from selenium import webdriver
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')

    Метод 1 — JavaScript

    from selenium import webdriver
    import time
    wd = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
    wd.get('https://twitter.com/elonmusk?lang=en')
    time.sleep(3)
    prev_height = wd.execute_script('return document.body.screollHeight')
    while True:
      wd.execute_script('window.scrollTo(0, document.body.scrollHeight);')
      time.sleep(3)
      new_height = wd.execute_script('return document.body.scrollHeight')
      if new_height == prev_height:
        break
      prev_height == new_height

    Метод 2 — Клавиши

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    import time
    wd = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
    wd.get('https://twitter.com/elonmusk?lang=en')
    time.sleep(3)
    element = wd.find_element_by_tag_name('body')
    while True:
      element.send_keys(Keys.PAGE_DOWN)
      time.sleep(3)