在Python中使用Mechanize获取和捕获HTTP响应

2024-04-20 00:09:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从python中的Mechanize获取响应代码。当我能够得到一个200状态码时,其他任何东西都不会返回(404抛出和异常,30x被忽略)。有办法得到原始状态码吗?

谢谢


Tags: 代码状态mechanize办法码时
2条回答

错误将引发异常,因此请使用try:…except:。。。来对付他们。

Mechanize browser对象有一个方法set_handle_redirect(),可用于打开或关闭30x重定向。关闭它,您将收到一个重定向错误,您处理该错误的方式与处理任何其他错误的方式相同:

>>> from mechanize import Browser
>>> browser = Browser()
>>> resp = browser.open('http://www.oxfam.com') # this generates a redirect
>>> resp.geturl()
'http://www.oxfam.org/'
>>> browser.set_handle_redirect(False)
>>> resp = browser.open('http://www.oxfam.com')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 209, in open
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 261, in _mech_open
mechanize._response.httperror_seek_wrapper: HTTP Error 301: Moved Permanently
>>>
>>> from urllib2 import HTTPError
>>> try:
...    resp = browser.open('http://www.oxfam.com')
... except HTTPError, e:
...    print "Got error code", e.code
...
Got error code 301

在斜纹布中,做get_browser().get_code()

twill是一个优秀的自动化和测试层,构建在mechanize之上,使其更易于使用。它真的很方便。

相关问题 更多 >