使用Python和Mechanize接受条款和条件

时间:2014-04-23 06:57:40

标签: python post mechanize

我使用Python和Mechanize搜索数据库并返回结果。我在浏览条款和条件页面时遇到问题,无法访问实际的数据库搜索页面。

我已尝试使用Mechanize来操作页面上的“同意”按钮,但我收到了此回应。

<Form1 POST http://www.wataugacounty.org/ias/Search/Disclaimer2.aspx?FromUrl=..%
 2fsearch%2fcommonsearch.aspx%3fmode%3dparid application/x-www-form-urlencoded
  <HiddenControl(__EVENTTARGET=)>
  <HiddenControl(__EVENTARGUMENT=)>
  <HiddenControl(__VIEWSTATE=/wEPDwUKLTk3MzgyMzUzOQ8UKwACZGdkZARSom15z0v0QyobiaK
gUmCf0EcW)>
  <IgnoreControl(btDisagree=<None>)>
  <IgnoreControl(btAgree=<None>)>>
Traceback (most recent call last):
  File "run.py", line 19, in <module>
    br["btAgree"] = 'True'
   File "C:\Python27\Lib\site-packages\mechanize\_form.py", line 2784, in __setit
em__
raise ValueError(str(e))
ValueError: control 'btAgree' is ignored, hence read-only

我不确定Mechanize是否能够处理验收。我从哪里开始?

1 个答案:

答案 0 :(得分:1)

Mechanize不会削减它,因为它不会评估Javascript代码而你确实需要它,因为输入按钮会触发Javascript函数。即使您尝试使用Mechanize来简单地提交表单,您也会收到以下消息:

  

网站无法确认您是否接受了   免责声明。这种情况通常是在您的网络上引起的   浏览器设置为阻止使用Javascript。这个网站需要   在您的浏览器中启用Javascript。 Javascript是一个   编程语言,使我们能够为您提供更丰富的内容   比其他情况更愉快的体验。这个网站   没有Javascript就无法运行。

你有一些选择。

  • ghost.py是一个无头的webkit Web客户端(因此,它将运行Javascript)
  • Selenium
  • 另外值得注意的是(虽然不是用Python编写)是PhantomJS,另一个无头webkit客户端