2016-11-01 58 views
0

我是Selenium的新手,对JavaScript不熟悉。我想从获得新闻链接this link。因此,我只需滚动包含标题的容器。我用Python来使用Selenium。我的代码是如何使用Python在Selenium中滚动指定的无限滚动元素

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

什么是这样的:

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

不要忘了,包括充足的睡眠时间,以确保该内容已正确加载。此外,由于您没有查找任何特定文本,因此您需要决定何时停止。因此,也许可以检查你所搜索的数据是否停止了变化。

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

+0

感谢尤金S.我如何使用你的代码来解决我的问题?我必须从包含标题的框中获取网址,但我不知道如何从具体的网站开始。我是否需要将Selenium与请求结合起来,还是只能在我的情况下工作? –

+0

@farshidbalan对不起,我错过了你发布的链接。 –

+0

@尤金,我已经深入搜索了一个从这个特定网站上获取链接的答案,Ajax代码与其他网站不同,而美丽汤不适合它。我真的希望你能帮助我。 –