【问题标题】:How to scroll specified infinite scroll element in Selenium with Python如何使用 Python 在 Selenium 中滚动指定的无限滚动元素
【发布时间】:2016-11-01 21:14:02
【问题描述】:

我是 Selenium 新手,不熟悉 JavaScript。我想在this link 中获取来自Top Stories 的新闻链接。因此,我只需要滚动包含标题的容器。我正在将 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"。我阅读了如何在页面中抓取无限滚动,但是在页面内滚动特定的无限滚动对我来说是一个挑战。任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    这样的事情怎么样:

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

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

    话虽如此,请确保您完全需要滚动。在某些情况下,列表中的全部数据都可以直接使用,即使它在屏幕上部分不可见。仅当您需要在 AJAX 页面上加载其他数据时才需要滚动。

    【讨论】:

    • 感谢 Eugene S。如何使用您的代码解决我的问题?我必须从包含标题的那个框中获取 URL,但我不知道如何从那个特定的开始。我是否需要将 Selenium 与请求结合使用,或者它只能在我的情况下工作?
    • @farshidbalan 抱歉,我错过了您发布的链接。
    • @Eugene,我已经集中搜索了从这个特定网站抓取链接的答案,Ajax 代码与其他网站不同,Beautiful Soup 不适用于它。我真的希望你能帮助我。
    猜你喜欢
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2012-02-29
    • 2018-05-29
    • 1970-01-01
    • 2015-04-12
    • 2015-05-06
    相关资源
    最近更新 更多