python仅使用urllib2获取标头

python仅使用urllib2获取标头,第1张

python仅使用urllib2获取标头

首先,您的代码包含几个错误:

  1. 根据您的每个请求

    getheadersonly
    安装一个新的全局urlopener,然后将其用于后续的
    urllib2.urlopen

  2. 您进行两个HTTP请求以获取响应的两个不同属性。

  3. 的实现

    urllib2.HTTPRedirectHandler.http_error_302
    并不是那么简单,而且我不了解它最初如何防止重定向。

基本上,您应该了解每个处理程序都安装在打开程序中以处理某种响应。

urllib2.HTTPRedirectHandler
是否可以将某些HTTP代码转换为重定向。如果您不希望重定向,请不要在重定向器中添加重定向处理程序。如果您不想打开ftp链接,请不要添加
FTPHandler
,等等。

urllib2.HTTPHandler()
要做的就是创建一个新的打开器并将其添加到其中,将请求自定义为“
HEAD”请求,然后将请求的实例传递给打开器,读取属性,然后关闭响应。

class HeadRequest(urllib2.Request):    def get_method(self):        return 'HEAD'def getheadersonly(url, redirections=True):    opener = urllib2.OpenerDirector()    opener.add_handler(urllib2.HTTPHandler())    opener.add_handler(urllib2.HTTPDefaultErrorHandler())    if redirections:        # HTTPErrorProcessor makes HTTPRedirectHandler work        opener.add_handler(urllib2.HTTPErrorProcessor())        opener.add_handler(urllib2.HTTPRedirectHandler())    try:        res = opener.open(HeadRequest(url))    except urllib2.HTTPError, res:        pass    res.close()    return dict(pre=res.pre, headers=res.info(), finalurl=res.geturl())


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5648491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存