【问题标题】:Submitting a form, and getting the result using mechanise in python提交表单,并在 python 中使用 mechanise 获取结果
【发布时间】:2016-12-16 18:22:42
【问题描述】:

我正在尝试使用 mechanise 提交网络表单并为我打印出结果。输入坐标来自 CSV 文件。

def form_scraper(xcord,ycord):
    br = mechanize.Browser()
    br.set_handle_refresh(False)
    br.open('http://www.whoi.edu/marine/ndsf/cgi-bin/NDSFutility.cgi?form=0&from=XY&to=LatLon')

    for form in br.forms():
        print 'Form name:', form.name

    br.select_form('XY2LLForm')

    br.form['Xcord'] = xcord
    br.form['Ycord'] = ycord

    br.form['DecLat'] = '18.10219969497151'
    br.form['DecLon'] = '79.00285162135349'

    response = br.submit()
    form_result = response.read()
    print form_result

这给了我以下错误并且不产生任何输出。

Traceback (most recent call last):
  File "converter.py", line 31, in <module>
    form_scraper('1', '2')
  File "converter.py", line 20, in form_scraper
    response = br.submit()
  File "/usr/local/lib/python2.7/site-packages/mechanize/_mechanize.py", line 541, in submit
    return self.open(self.click(*args, **kwds))
  File "/usr/local/lib/python2.7/site-packages/mechanize/_mechanize.py", line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File "/usr/local/lib/python2.7/site-packages/mechanize/_mechanize.py", line 255, in _mech_open
    raise response
mechanize._response.httperror_seek_wrapper: HTTP Error 404: Not Found

我错过了什么?

【问题讨论】:

    标签: python forms web-scraping mechanize


    【解决方案1】:

    您正在使用的表单的action 属性指定了一个不存在的位置。该表单没有提交按钮。当您在浏览器中使用该表单时,它起作用的原因是单击“转换”按钮会运行一个 JavaScript 函数,该函数将执行实际计算并将结果写入页面底部的表格中。

    恐怕你不能使用 mechanize 来检索结果,因为它不处理 JavaScript。

    【讨论】:

    • 谢谢马蒂亚斯,这就是我的想法。您建议使用什么工具来处理 JavaScript 表单?
    猜你喜欢
    • 1970-01-01
    • 2020-09-22
    • 2016-09-11
    • 2015-03-09
    • 2013-05-17
    • 2015-09-09
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多