Skip to main content
 首页 » 编程设计

python之使用 Mechanize 访问 Javascript 按钮

2025年05月04日27me-sa

我正在尝试使用 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; 
... 

因此,如果您想“窃取”他们的转化数据,只需提取填充价格数组(是的,我知道它在技术上是一个对象!)的所有行。