我想获得一些html抓取的经验,所以我想看看我是否可以获取以下网站的一些值:http://www.iex.nl/Aandeel-Koers/11890/Royal-Imtech/koers.aspx
该网站显示了imtech股票的价格。 如果您查看该网站,您会看到有1个数字以粗体显示,这是共享的价格。
正如您可能已经看到的,这个价格会发生变化,这没关系。我只想在此时运行脚本时的值。
但如果您重新加载页面,您可能会注意到它首次显示“laatste koers”,并在延迟1秒后显示“实时”
你可能已经想到了,我对“实时”价值感兴趣。
这是我的问题,我如何得到这个值,我在不同的地方尝试过time.sleep(2)。我已经在请求时尝试了超时。两者都不起作用。
我该如何解决这个问题?
from lxml import html
import requests
pagina = 'http://www.iex.nl/Aandeel-Koers/11890/Royal-Imtech/koers.aspx'
page = requests.get(pagina)
tree = html.fromstring(page.text)
koers = tree.xpath('//span[@class="RealtimeLabel"]/text()')
prices = tree.xpath('//span[@id="ctl00_ctl00_Content_LeftContent_PriceDetails_lblLastPrice"]/text()')
print koers[0], pagina.split("/")[5], prices[0]
我得到像这样的输出
Laatste koers Royal-Imtech 0,093
虽然我想要这样的输出
Realtime Royal-Imtech 0,093
答案 0 :(得分:2)
我建议使用等待,直到元素发生变化。
找到下面的代码块来帮助您。
def wait_while(condition, timeout, delta=1):
"""
@condition: lambda function which checks if the text contains "REALTIME"
@timeout: Max waiting time
@delta: time after which another check has to be made
"""
max_time = time.time() + timeout
while max_time > time.time():
if condition():
return True
time.sleep(delta)
return False