【问题标题】:Python urllib2: Reading content body even during HTTPError exception?Python urllib2:即使在 HTTPError 异常期间也能读取内容正文?
【发布时间】:2010-12-12 10:28:57
【问题描述】:

我正在使用 urllib2 通过 HTTP 获取页面。有时,当我的请求包含错误时,资源会引发 HTTP 错误 400(错误请求)。但是,该响应还包含一个提供详细错误消息的 XML 元素。能够看到该错误而不仅仅是 urllib2 返回的 HTTPError 异常会非常方便。

如何在异常情况下返回文档内容?

【问题讨论】:

标签: python


【解决方案1】:

你可以read来自HTTPError异常的响应消息。

Python3 示例

import urllib.request

try:
    request = urllib.request.Request('http://httpstat.us/418', headers={'Accept': 'text/plain', 'User-Agent': ''})
    with urllib.request.urlopen(request) as page:
        print('success: ' + page.read().decode())
except urllib.error.HTTPError as httpError:
        error = httpError.read().decode()
        print('error: ' + error)

【讨论】:

    【解决方案2】:
    import urllib2
    try:
        request = urllib2.Request('http://www.somesite.com')
        response = urllib2.urlopen(req)
    except urllib2.HTTPError as e:
        error_message = e.read()
        print error_message
    

    【讨论】:

      【解决方案3】:

      您可以将错误视为响应。

      http://www.voidspace.org.uk/python/articles/urllib2.shtml#httperror

      当出现错误时,服务器 通过返回 HTTP 错误进行响应 代码和错误页面。您可以使用 HTTPError 实例作为响应 在返回的页面上。这意味着 以及代码属性,它也 有read、geturl和info、方法。

      【讨论】:

        猜你喜欢
        • 2015-01-31
        • 2013-01-27
        • 2012-07-12
        • 2017-12-29
        • 1970-01-01
        • 2015-07-10
        • 1970-01-01
        • 2011-01-15
        • 2013-08-20
        相关资源
        最近更新 更多