使用 Python 2 中的 urllib2 发出 HTTP HEAD 请求 [英] Making HTTP HEAD request with urllib2 from Python 2

查看:92
本文介绍了使用 Python 2 中的 urllib2 发出 HTTP HEAD 请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 Python 2 执行页面的 HEAD 请求.

I'm trying to do a HEAD request of a page using Python 2.

我正在努力

import misc_urllib2
.....
opender = urllib2.build_opener([misc_urllib2.MyHTTPRedirectHandler(), misc_urllib2.HeadRequest()])

misc_urllib2.py 包含

class HeadRequest(urllib2.Request):
    def get_method(self):
        return "HEAD"


class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
    def __init__ (self):
        self.redirects = []

    def http_error_301(self, req, fp, code, msg, headers):  
        result = urllib2.HTTPRedirectHandler.http_error_301(
                self, req, fp, code, msg, headers)
        result.redirect_code = code
        return result

    http_error_302 = http_error_303 = http_error_307 = http_error_301

但是我得到了

TypeError: __init__() takes at least 2 arguments (1 given)

如果我愿意

opender = urllib2.build_opener(misc_urllib2.MyHTTPRedirectHandler())

然后它工作正常

推荐答案

这很好用:

import urllib2
request = urllib2.Request('http://localhost:8080')
request.get_method = lambda : 'HEAD'

response = urllib2.urlopen(request)
print response.info()

使用在 python 中被黑客入侵的快速和肮脏的 HTTPd 进行测试:

Tested with quick and dirty HTTPd hacked in python:

Server: BaseHTTP/0.3 Python/2.6.6
Date: Sun, 12 Dec 2010 11:52:33 GMT
Content-type: text/html
X-REQUEST_METHOD: HEAD

我添加了一个自定义标头字段 X-REQUEST_METHOD 以显示它有效:)

I've added a custom header field X-REQUEST_METHOD to show it works :)

这里是 HTTPd 日志:

Here is HTTPd log:

Sun Dec 12 12:52:28 2010 Server Starts - localhost:8080
localhost.localdomain - - [12/Dec/2010 12:52:33] "HEAD / HTTP/1.1" 200 -

还有 httplib2

import httplib2
h = httplib2.Http()
resp = h.request("http://www.google.com", 'HEAD')

这篇关于使用 Python 2 中的 urllib2 发出 HTTP HEAD 请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆