首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有driver.refresh()的情况下抓取实况体育数据?

在没有driver.refresh()的情况下抓取实况体育数据?
EN

Stack Overflow用户
提问于 2017-01-29 18:41:34
回答 1查看 903关注 0票数 1

我的目标是在网站发生变化时从网站上抓取实时数据。下面是一个示例网址:http://www.liveticker.com/spiel/6HXLRTtd/#spiel-statistiken;0

我使用python、selenium和time作为循环。虽然我在火狐上得到了我想要的东西,但我想使用PhantomJS (不打开几个浏览器窗口),但它在1-4次刷新后就停止了抓取。

我猜测为什么会发生这种情况:如果你手动访问页面,点击刷新几次,你会得到一个屏幕消息,告诉你刷新是不必要的。但这只是一种猜测,因为Firefox似乎仍然能够抓取数据。

因此,我想知道为什么PhantomJS停止抓取以及如何处理它。python有没有一种方法可以在不刷新或重新加载页面的情况下连续抓取实时数据(我猜是AJAX)?

希望你能帮助我,我对这一切都很陌生,到目前为止还没有找到任何相关的线索。

下面是我的函数,以防万一:

代码语言:javascript
复制
def get_games_stats(url): 
  driver.get(url)
  t=2
  starttime=time.time()
  t=float(t)

  while True:
    time.sleep(t - ((time.time() - starttime) % t))
    driver.refresh()        
    time.sleep(5)

    tabelle = driver.find_element_by_id("tab-statistics-0-statistic")
    text_tabelle = tabelle.text
    x = text_tabelle.encode( "utf-8" )
    x= [int(s) for s in re.findall(r'\b\d+\b', x)]

    team_a =  x[::2]
    team_b = x[1::2]
    print team_a, team_b
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 18:51:44

正如您所提到的,有时在页面刷新后可能会出现警告。这可能会阻塞代码的执行。尝试按如下方式处理此警报:

代码语言:javascript
复制
from selenium.common.exceptions import NoAlertPresentException

while True:
    time.sleep(t - ((time.time() - starttime) % t))
    driver.refresh()        
    time.sleep(5)

    # This might not work with PhantomJS
    #try:
    #    driver.switch_to_alert().accept()
    #except NoAlertPresentException:
    #    pass

    try:
        driver.execute_script("window.confirm = function(msg) { return true; }")
    except:
        pass

    tabelle = driver.find_element_by_id("tab-statistics-0-statistic")
    text_tabelle = tabelle.text
    x = text_tabelle.encode( "utf-8" )
    x= [int(s) for s in re.findall(r'\b\d+\b', x)]

    team_a =  x[::2]
    team_b = x[1::2]
    print team_a, team_b
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41919990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档