Я пытаюсь очистить все ссылки, доступные на бесконечной странице, прокручивая вниз и получая новые доступные ссылки.Однако time.sleep () не позволяет приостановить драйвер на разумное время, прежде чем прокручивать снова и снова.
Есть ли способ настроить код, который вы можете найти внизу, чтобы уменьшить количество спящих во время первых итераций (когда страница все еще быстро загружает новый контент) и подождать необходимое время дляследующие итерации (когда страница будет загружать новый контент медленно)?
Использование простого
for i in range(1,20):
time.sleep(i)
не заставит меня сэкономить время во время первых итераций и не отрегулирует time.sleep() эффективно после многих итераций.
Вот код, который я использую из предложения, найденного в " Как я могу прокрутить веб-страницу с помощью веб-драйвера selenium в python? ":
from selenium import webdriver
scroll_pause_time = 5
scraped_links = []
driver = webdriver.Chrome(executable_path=driver_path)
driver.get(url)
links = driver.find_elements_by_xpath(links_filepath)
for link in links:
if link not in scraped_links:
scraped_links.append(link)
print(link)
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(scroll_pause_time)
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
links = driver.find_elements_by_xpath(links_filepath)
for link in links:
if link not in scraped_links:
scraped_links.append(link)
print(link)
После 20-30 итераций код прерывается, потому что time.sleep () слишком низок по сравнению со скоростью обновления веб-страницы.