我正在尝试使用 mechanize/python 从 bloomberg 网站下载货币数据。 http://www.bloomberg.com/markets/currencies/
我已经设法将字段更新为所需的货币,不幸的是,我在“提交”转换按钮时遇到了问题。
我认为 br.submit() 不起作用,当我尝试使用 br.click 时,它说该项目不可点击。 这是按钮的 html
<input type="button" value="Convert" class="btn w75" name="button" onclick="calculate(); return false;">
有人建议使用 br.form.action""(http://bytes.com/topic/python/answers/764326-using-mechanize-python-navigate-website) 但我不确定我会怎么做实现它。
到目前为止,这是代码的核心......
br = mechanize.Browser() #initialized with and lets cookiejar handle all the cookies stuff
br.open('http://www.bloomberg.com/markets/currencies/')
br.form['from_tkc']=['USD:CUR']
br.form['to_tkc']=['BGN:CUR']
br.submit() .
print br.response().read()
不幸的是,输出的 html 没有我需要的数据,即货币计算器,我知道按钮已更新。任何人都可以指出正确的方向或帮助我更多地了解该按钮。
请您参考如下方法:
这是一个纯 JavaScript 表单。根本没有提交任何内容,因此您无法使用 Mechanize 访问/提交它。
<form id="currcalc" onsubmit="calculate(); return false;" action="#">
http://www.bloomberg.com/javascripts/currencycalc_10.js是计算器背后的 JavaScript,您可以直接在包含以下表单的页面的 HTML 源代码中找到转换数据:
<script type="text/javascript">
//<![CDATA[
var test_obj = new Object();
var price = new Object();
price['ADP:CUR'] = 122.244;
price['AED:CUR'] = 3.67295;
price['AFN:CUR'] = 45.33;
price['ALL:CUR'] = 102.325;
...
因此,如果您想“窃取”他们的转化数据,只需提取填充价格数组(是的,我知道它在技术上是一个对象!)的所有行。
