我正在尝试使用Python 2进行页面的HEAD请求。
我在尝试
import misc_urllib2 ..... opender = urllib2.build_opener([misc_urllib2.MyHTTPRedirectHandler(), misc_urllib2.HeadRequest()])
与misc_urllib2.py包含
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的测试:
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以显示它的工作:)
这是HTTPd日志:
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')