如何制作python request.get等几秒钟?

时间:2014-10-09 13:53:58

标签: python python-2.7 lxml python-requests

我想获得一些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

1 个答案:

答案 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