使用Selenium + python来废弃一个具有无限滚动的页面(基本上滚动直到最大前500个结果显示)
使用以下代码,我可以滚动到页面底部。现在我想停止进一步滚动不提取任何内容。 (比如,页面只有200个结果,我不想继续滚动假设最多500个结果)
driver = webdriver.Firefox()
driver.get(url)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
我尝试访问window.pageYOffset
,但它始终为“无”。
答案 0 :(得分:0)
我在 Chrome 中使用 Selenium,而不是 Firefox,但以下对我有用:
我的代码如下:
import time
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("www.yourTargetURL.com")
reached_page_end = False
last_height = driver.execute_script("return document.body.scrollHeight")
while not reached_page_end:
driver.find_element_by_xpath('//body').send_keys(Keys.END)
time.sleep(2)
new_height = driver.execute_script("return document.body.scrollHeight")
if last_height == new_height:
reached_page_end = True
else:
last_height = new_height
driver.quit()
答案 1 :(得分:-1)
如果没有要获取的数据,您可以在每次滚动尝试之前和之后检查document.body.scrollTop,然后此值将保持不变
distanceToTop = driver.execute_script("return document.body.scrollTop);")