【问题标题】:Python Mechanize Error When Selecting Form选择表格时Python机械化错误
【发布时间】:2015-05-07 12:55:57
【问题描述】:

我要提交的网站代码 ::: FORM PART OF WEBSIDE CODE


当我尝试选择表单时发生的错误

Traceback (most recent call last):
  File "call.py", line 35, in <module>
    loginAccount()
  File "call.py", line 15, in loginAccount
    browser.select_form(nr = 0)
  File "/usr/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 499, in select_form
    global_form = self._factory.global_form
  File "/usr/lib/python2.7/dist-packages/mechanize/_html.py", line 544, in __getattr__
    self.forms()
  File "/usr/lib/python2.7/dist-packages/mechanize/_html.py", line 557, in forms
    self._forms_factory.forms())
  File "/usr/lib/python2.7/dist-packages/mechanize/_html.py", line 237, in forms
    _urlunparse=_rfc3986.urlunsplit,
  File "/usr/lib/python2.7/dist-packages/mechanize/_form.py", line 844, in ParseResponseEx
    _urlunparse=_urlunparse,
  File "/usr/lib/python2.7/dist-packages/mechanize/_form.py", line 981, in _ParseFileEx
    fp.feed(data)
  File "/usr/lib/python2.7/dist-packages/mechanize/_form.py", line 760, in feed
    raise ParseError(exc)
mechanize._form.ParseError: expected name token at '<!\\\\])/g,"\\\\$1").rep'

源代码(我写了# ERROR OCCUR HERE之类的评论):

   browser = mechanize.Browser()
   browser.set_handle_robots(False)
   browser.set_handle_refresh(False)
   browser.open("https://accounts.google.com/ServiceLoginAuth")
   browser.select_form(nr = 0)
   browser.form['Email'] = "MYMAIL@gmail.com"
   browser.form['Passwd'] = "MYPASWORD"
   browser.submit() # Till the here, works fine. I can login.

   resp = browser.open("https://accounts.google.com/b/0/SmsAuthSettings?Setup=1")
   resp = resp.read()
   browser.select_form(nr = 0) # ERROR OCCUR HERE

当我删除 browser.select_form(nr = 0) 时,程序运行正常。 我该怎么办?

【问题讨论】:

  • 代码对我有效,没有任何错误。
  • 当我阅读您的评论时,我尝试使用不同的电子邮件,即使我尝试更改我的帐户语言但对我来说仍然一样。我认为您无法登录您的帐户,因此它为您重定向了另一个链接,该链接具有表单,因此它没有给您错误。
  • 您确定 resp 变量包含您提供的实际 HTML 代码吗?
  • 对我来说也很好
  • 嘿,你能检查你的代码,如果它包含这样的东西:codepad.org/c6a8hNGZ 只有当你一切正常时你才能看到。

标签: python python-2.7 mechanize


【解决方案1】:

使用更强大的解析器, 例如 browser = mechanize.Browser(factory=mechanize.RobustFactory())

查看此链接以获得更多帮助: http://www.thecodingforums.com/threads/mechanize-select_form-issue.359575/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2010-09-14
    相关资源
    最近更新 更多