我的目标是在网站发生变化时从网站上删除实时数据。 这是一个示例URL: http://www.liveticker.com/spiel/6HXLRTtd/#spiel-statistiken;0
我使用python,selenium和time来循环。虽然我有点想得到我想要的Firefox我想使用PhantomJS(没有几个浏览器窗口打开),但它会在1-4刷新后停止刮擦。
我猜测为什么会发生这种情况:如果您手动访问该页面几次点击刷新,则会收到一条屏幕消息,告知您无需刷新。但这只是猜测,因为Firefox似乎仍然可以抓取数据。
所以我想知道为什么PhantomJS会停止刮擦以及如何处理它。是否有一个方法用python连续刮取实时数据(我猜是AJAX)而无需刷新或重新加载页面?
希望你能提供帮助,我对这一切都很陌生,到目前为止还没有找到任何相关线索。
以下是我的功能:
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
答案 0 :(得分:0)
正如您所提到的,有时可能会出现页面刷新警报。这可能会阻止您的代码执行。尝试处理此警报,如下所示:
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