У меня есть страница, которую можно прокручивать вниз до бесконечности (для иллюстрации я буду использовать страницу https://www.reuters.com/news/us, которая показывает более старые новости каждый раз, когда вы прокручиваете страницу вниз) ). Я хочу прокрутить вниз до нижней части страницы, чтобы загрузить старые элементы много раз, используя селен. Следующий код работает в принципе:
driver = webdriver.Chrome(executable_path=r"/Users/bernhardclemm/Desktop/chromedriver")
driver.get('https://www.reuters.com/news/us')
# Accept Cookies
wait = WebDriverWait(driver, 5)
cookies = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@id='_evidon-banner-acceptbutton']")))
cookies.click()
# Switch of "Photos" to speed up loading
wait = WebDriverWait(driver, 5)
photos_off = wait.until(EC.element_to_be_clickable((By.XPATH, "//label[contains(text(),'Photos')]")))
photos_off.click()
# Scroll down 100 times
i = 1
while i < 500:
print(i)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
i += 1
time.sleep(1)
Как вы можете видеть в следующем GIF, для каждого поворота в l oop (i
напечатано на консоли Python справа), драйвер Selenium прокручивается вниз один раз (Google Chrome слева).
Однако иногда драйвер Selenium достигает нижней части страницы. но новый контент не загружается, как это показывает GIF. Обратите внимание, что l oop все еще работает в Python:
Когда я немного прокручиваю вверх в Chrome вручную , автоматическая c прокрутка начинается снова. Так что это , а не , потому что сайт достиг своего конца.
Есть идеи, связано ли это с веб-сайтом или с ошибкой в моем коде? Если что-то связано с веб-сайтом, как можно избежать проблемы с Selenium?