【问题标题】:Accessing Javascript Button with Mechanize使用 Mechanize 访问 Javascript 按钮
【发布时间】:2011-01-28 22:54:25
【问题描述】:

我正在尝试使用 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 没有我需要的数据,即货币计算器,我知道按钮已更新。谁能指出我正确的方向或帮助我更多地理解该按钮。

【问题讨论】:

    标签: python button submit mechanize


    【解决方案1】:

    这是一个纯 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;
    ...
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 2011-11-07
      • 2012-07-02
      • 2011-06-29
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多