我怎样才能让 python 等到网页加载了一些我想要获取的数据?
How can I make python wait untill a webpage loads some data I'm trying to get?
我需要从这个网站获取一些号码
但是我需要的数据需要一些时间来加载并显示 'wait' 消息,直到它完全加载。
我使用 find all 和一些正则表达式来获取我需要的数据,但是当我执行时,python
给我在数据加载之前出现的 'wait' 消息。
有没有办法让 python 'wait' 直到所有数据加载完毕?
我的代码看起来像这样,
import urllib.request
from re import findall
def divisas():
pag = urllib.request.urlopen('http://www.preciodolar.com/')
html = str(pag.read())
brasil = findall('<td class="usdbrl_buy">(.*?)</td>',html)
return brasil
这是因为页面是用JavaScript生成的。您将获得完整的 HTML,但 JavaScript 处理更改 DOM 并显示信息。
您有两个选择:
- 尝试解释 JavaScript(不容易)。有很多questions about this in stack overflow already.
- 找到 URL 页面正在使用 AJAX 获取实际数据并使用它。
这真的取决于您需要该页面的目的。看起来您正在尝试解析数据,因此第二个选项允许您发出单个请求以获取原始数据。
您应该找到 ajax 请求或 jsonp 请求。
在这种情况下,它是 jsonp:http://api.preciodolar.com/api/crossdata.php?callback=jQuery1112024555979575961828_1442466073980&_=1442466073981
我需要从这个网站获取一些号码
但是我需要的数据需要一些时间来加载并显示 'wait' 消息,直到它完全加载。
我使用 find all 和一些正则表达式来获取我需要的数据,但是当我执行时,python
给我在数据加载之前出现的 'wait' 消息。
有没有办法让 python 'wait' 直到所有数据加载完毕? 我的代码看起来像这样,
import urllib.request
from re import findall
def divisas():
pag = urllib.request.urlopen('http://www.preciodolar.com/')
html = str(pag.read())
brasil = findall('<td class="usdbrl_buy">(.*?)</td>',html)
return brasil
这是因为页面是用JavaScript生成的。您将获得完整的 HTML,但 JavaScript 处理更改 DOM 并显示信息。 您有两个选择:
- 尝试解释 JavaScript(不容易)。有很多questions about this in stack overflow already.
- 找到 URL 页面正在使用 AJAX 获取实际数据并使用它。
这真的取决于您需要该页面的目的。看起来您正在尝试解析数据,因此第二个选项允许您发出单个请求以获取原始数据。
您应该找到 ajax 请求或 jsonp 请求。 在这种情况下,它是 jsonp:http://api.preciodolar.com/api/crossdata.php?callback=jQuery1112024555979575961828_1442466073980&_=1442466073981