如何使用Python在Selenium中滚动指定的无限滚动元素

时间:2016-11-01 21:14:03

标签: python-2.7 selenium-webdriver infinite-scroll

我是Selenium的新手,不熟悉JavaScript。我想从this link获取热门故事的新闻链接。因此,我必须只滚动包含标题的容器。我正在使用Selenium和Python。我的代码是

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome('C:\\Program Files (x86)\\Google\\Chrome\\chromedriver.exe')
driver.get("http://www.marketwatch.com/newsviewer")
element = driver.find_element_by_tag_name('html')
element.send_keys(Keys.END)
time.sleep(8)
element.send_keys(Keys.HOME)

我收到错误消息:"WebDriverException: Message: unknown error: cannot focus element"。我读了如何在页面中刮擦无限滚动,但在页面中滚动特定的无限滚动对我来说是一个挑战。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这样的事情:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

不要忘记包含足够的睡眠时间以确保内容已正确加载。此外,由于您没有查找任何特定文本,因此您需要决定何时停止。所以也许以某种方式检查你正在抓取的数据是否停止改变。

这样说,确保你需要滚动。在某些情况下,列表上的整个数据都可以直接使用,即使它在屏幕上部分不可见。只有在需要在AJAX页面上加载其他数据时才需要滚动。