我正在尝试从网站中提取数字数据。我尝试使用简单的网络抓取工具来检索数据:
from mechanize import Browser
from bs4 import BeautifulSoup
mech = Browser()
url = "http://www.oanda.com/currency/live-exchange-rates/"
page = mech.open(url)
html = page.read()
soup = BeautifulSoup(html)
data1 = soup.find(id='EUR_USD-b-int')
print data1
这种方法通常会提供来自网站的数据行,包括我要提取的元素的内容。但是,它提供了除内容之外的所有内容,而这正是我需要的部分。我尝试了.contents,它返回[]。我也尝试过.child,它返回“ none”。有谁知道另一种可行的方法。我浏览了漂亮的汤文档,但似乎找不到解决方案?
最佳答案
通过使用以下命令使用Javascript更新此页面上的值:
GET http://www.oanda.com/lfr/rates_lrrr?tstamp=1392757175089&lrrr_inverts=1
Referer: http://www.oanda.com/currency/live-exchange-rates/
(请注意,仅查看此内容,我就被阻止了4次,他们非常不高兴。这是因为他们将这些数据作为订阅服务进行商业销售。)
发出请求,并在http://www.oanda.com/jslib/wl/lrrr/liverates.js中解析响应。使用RC4(http://en.wikipedia.org/wiki/RC4)对响应进行“加密”
RC4解密方法来自http://www.oanda.com/wandacache/rc4-ea63ca8c97e3cbcd75f72603d4e99df48eb46f66.js。该文件似乎经常刷新,因此您需要从首页获取最新链接并提取
var key=<value>
以完全解密该值。关于python - 从网站上抓取一个不断变化的整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21864154/