【问题标题】:check errors or success in python mechanize在 python mechanize 中检查错误或成功
【发布时间】:2014-02-21 07:53:29
【问题描述】:

如何查看提交是否成功。当我提供正确的用户名时,它不会显示任何内容。但即使我提交了错误的用户名,它也不会抛出任何错误。如何捕获错误或检查成功结果。任何帮助将不胜感激。谢谢。

代码:

try:
    import mechanize
except ImportError:
    print "Could not import Mechanize. Please install from Mechanize website."
br = mechanize.Browser()
interletter = 'http://somesite.com/adminpanel/index.php'
br.open(interletter)
print br.geturl()

br.select_form(name="frm_login")
br["admin_userid"] = "user"
br["admin_password"] = "pword"
result2 = br.submit()


http://somesite.com/adminpanel/index.php
<response_seek_wrapper at 0x25a3cb0 whose wrapped object = <closeable_response at 0x25ab738 whose fp = <socket._fileobject object at 0x025A0970>>>

【问题讨论】:

标签: python python-2.7 mechanize mechanize-python


【解决方案1】:

即使您的登录失败,您正在处理的网络服务器仍有可能发送 HTTP 200 状态代码。他们可能只是在响应正文中包含错误文本。

您应该可以调用result2.read() 来获取响应对象的内容。然后,您必须检查或解析它以确定您的登录尝试是否成功。

【讨论】:

  • 感谢您的回答。我试过result2.read(),但除了这个-'',它什么也没显示。我做错了什么?
  • 那只是一个空字符串。也许服务器没有返回任何东西?它返回什么 HTTP 状态?检查result2.code
  • 如果服务器返回 200 且响应体为空,是失败还是成功,那么您必须以其他方式确定。你能看一下响应头吗? (result2.info() IIRC) 或者,您可以检查 cookie jar 以查看它是否设置了会话 cookie 以便成功登录。
  • result2.info() 正在返回:&lt;httplib.HTTPMessage instance at 0x02DA5F08&gt;
  • 哦,试试result2.info().headers
猜你喜欢
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 2012-06-17
  • 2016-04-11
  • 2015-09-27
相关资源
最近更新 更多