Соскребая постоянно освежающий сайт с Beautifulsoup4 и Selenium - PullRequest
0 голосов
/ 25 апреля 2020

Скрипт очищает сайт Ebay и возвращает первое объявление на сайте. Обычно это работает, но с наименьшим интервалом времени, например 5 с, происходит сбой, обычно через несколько минут. запросы на импорт

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import time

while True:
    options = Options()
    options.add_argument("--headless")
    browser= webdriver.Firefox(firefox_options=options)
    browser.get('https://www.ebay-kleinanzeigen.de/s-auto-rad-boot/sonstiges/sachsen/c241l3799')
    html = browser.page_source
    sel_soup = BeautifulSoup(html, 'html.parser')
    soup1 = sel_soup.findAll('ul', {'class':'itemlist-separatedbefore ad-list lazyload'})[1]
    soup2 = soup1.findAll('li', {'class':'ad-listitem lazyload-item'})[0]
    item_name = soup2.findAll('a', {'class':'ellipsis'})[0].text
    print(item_name)
    time.sleep(5)

Если я прав, сайт возвращает данные с JS. Вот почему я пытался решить эту проблему с помощью Selenium, но это не работает. Я получаю ту же ошибку.

soup1 = sel_soup.findAll('ul', {'class':'itemlist-separatedbefore ad-list lazyload'})[1]
IndexError: list index out of range

Я нашел похожий вопрос по stackoverflow, но он не работает для меня, или я делаю что-то не так. Как ждать, пока сайт вернет данные, используя Beautifulsoup4

...