【问题标题】:How to get HTTP return code from python urllib's urlopen?如何从 python urllib 的 urlopen 获取 HTTP 返回码?
【发布时间】:2013-01-25 14:39:48
【问题描述】:

我有以下代码:

f = urllib.urlopen(url)
html = f.read()

我想知道打开上面的 url 得到的 HTTP 状态码(HTTP 200、404 等)。

有人知道怎么做吗?

附: 我使用 python 2.5。

谢谢!!!

【问题讨论】:

  • 什么是 HTML 返回码?您是指 HTTP 状态吗?

标签: python urllib python-2.5


【解决方案1】:

可以使用urlopen()返回的对象的.getcode()方法

url = urllib.urlopen('http://www.stackoverflow.com/')
code = url.getcode()

【讨论】:

  • 可能是因为我使用python 2.5,但我得到以下错误信息:AttributeError: addinfourl instance has no attribute 'getcode'
【解决方案2】:

getcode() 仅在 Python 2.6 中添加。据我所知,在 2.5 中无法从请求本身获取状态代码,但 FancyURLopener 提供了一组函数,这些函数在某些错误代码上被调用——您可能会使用它来将状态代码保存在某处。我对它进行了子类化以告诉我何时发生 404

import urllib

class TellMeAbout404s(urllib.FancyURLopener):
    def http_error_404(self, url, fp, errcode, errmsg, headers, data=None):
        print("==== Got a 404")

opener = TellMeAbout404s()
f = opener.open("http://www.google.com/sofbewfwl")
print(f.info())

info() 提供 HTTP 标头,但不提供状态代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2010-10-25
    • 2015-02-05
    • 2020-07-07
    • 1970-01-01
    相关资源
    最近更新 更多