如何使用Selenium

时间:2017-06-23 12:02:05

标签: python selenium

使用Selenium + python来废弃一个具有无限滚动的页面(基本上滚动直到最大前500个结果显示)

使用以下代码,我可以滚动到页面底部。现在我想停止进一步滚动不提取任何内容。 (比如,页面只有200个结果,我不想继续滚动假设最多500个结果)

driver = webdriver.Firefox()
driver.get(url)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

我尝试访问window.pageYOffset,但它始终为“无”。

2 个答案:

答案 0 :(得分:0)

我在 Chrome 中使用 Selenium,而不是 Firefox,但以下对我有用:

  1. 在向下滚动之前捕获页面高度;
  2. 使用向下键向下滚动;
  3. 向下滚动后捕获页面高度;
  4. 如果滚动前后页面高度相同,则停止滚动

我的代码如下:

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);")