我是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"
。我读了如何在页面中刮擦无限滚动,但在页面中滚动特定的无限滚动对我来说是一个挑战。任何帮助将不胜感激。
答案 0 :(得分:0)
这样的事情:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
不要忘记包含足够的睡眠时间以确保内容已正确加载。此外,由于您没有查找任何特定文本,因此您需要决定何时停止。所以也许以某种方式检查你正在抓取的数据是否停止改变。
这样说,确保你需要滚动。在某些情况下,列表上的整个数据都可以直接使用,即使它在屏幕上部分不可见。只有在需要在AJAX页面上加载其他数据时才需要滚动。