【问题标题】:Use Selenium Webdriver to get periodically updated content使用 Selenium Webdriver 获取定期更新的内容
【发布时间】:2012-12-28 20:28:54
【问题描述】:

例如,聊天网站Omegle 总是在其主页上显示当前在线用户数量,我可以使用这个 python 脚本使用 Selenium 中的无头 HTMLUnit Webdriver 来提取:

from selenium import webdriver    
driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.HTMLUNITWITHJS)
driver.get('http://www.omegle.com/')
element = driver.find_element_by_id("onlinecount")
print element.text.split()[0]

输出如下:

22,183

这个数字是由脚本动态生成和定期更新的,我想每隔一段时间就读取这个动态更新的内容,而不是用driver.get重复加载整个页面。什么 Selenium Webdriver 方法或功能可以让我这样做?

This article 似乎是一个相关的线索,尽管它让我无处可去。

【问题讨论】:

    标签: javascript python selenium webdriver selenium-webdriver


    【解决方案1】:

    这是未经测试的,但我认为以下方法可能有效:

    from selenium import webdriver    
    from time import sleep
    driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.HTMLUNITWITHJS)
    driver.get('http://www.omegle.com/')
    interval = 10  #or whatever interval you want
    while True:
        element = driver.find_element_by_id("onlinecount")
        print element.text.split()[0]
        sleep(interval)
    

    我认为如果你在它被改变后找到元素,它会给你新的价值。

    【讨论】:

    • 正如我发现time.sleep 有效,我回来发现这个答案已经发布了!接受,谢谢!
    • 我不认为上面的答案是正确的。如果它找到一个元素并且你在它更新后尝试访问它的内容,它会经常抛出一个过时的元素异常。
    猜你喜欢
    • 1970-01-01
    • 2013-07-08
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多