Python:如何只获取响应头中的location值

Python中如何只获取响应头数据中的location值(就是重定向后的url),而无需获取响应体,以便提高执行效率?

urllib2.urlopen("http://www.baidu.com/link?url=cvmhrH2smgwBRrY4tngUZoaIRvg4Qjb0izqkvsh-FuCfuU97ljPjAiFokLX8-WFmOSd7hVU7_hxjABHT4ziQnnHRVyms8EYq05eDT4bDgULjZEH2ibm_QT_tWNIoLXYu").geturl()

虽然可以使用urllib2中的geturl方法,但貌似在使用urlopen的时候,会顺便获取响应体吧?

阅读 17.7k
2 个回答

参见http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html,注意看9.4 HEAD,HEAD方法是一个只要求返回Header的方法(GET方法还要求返回内容)。

我不太清楚urllib2里面改变http方法应该怎么做,但是在requests里你可以

headers = requests.head(url).headers

urllib2里面改变http方法,应该这么做:

class NoRedirection(urllib2.HTTPErrorProcessor):
  def http_response(self, request, response):
    return response
  https_response = http_response

opener = urllib2.build_opener(NoRedirection)
location = opener.open('http://www.example.com').info().getheader('Location')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题