我的目标是在网站发生变化时从网站上抓取实时数据。下面是一个示例网址:http://www.liveticker.com/spiel/6HXLRTtd/#spiel-statistiken;0
我使用python、selenium和time作为循环。虽然我在火狐上得到了我想要的东西,但我想使用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发布于 2017-01-29 18:51:44
正如您所提到的,有时在页面刷新后可能会出现警告。这可能会阻塞代码的执行。尝试按如下方式处理此警报:
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_bhttps://stackoverflow.com/questions/41919990
复制相似问题