Python 获取http请求的内容以及单个请求中的响应url

Python 获取http请求的内容以及单个请求中的响应url,python,http,python-3.x,http-headers,urllib2,Python,Http,Python 3.x,Http Headers,Urllib2,如何在单个请求中获取http响应的内容以及响应url(而不是请求的url) 为了得到回应,我使用了: from urllib2 import Request,urlopen try: headers = { 'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US;)' } request = Request(url, data, headers) print urlopen(request).read() exce

如何在单个请求中获取http响应的内容以及响应url(而不是请求的url)

为了得到回应,我使用了:

from urllib2 import Request,urlopen
try:
    headers  = { 'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US;)' }
    request  = Request(url, data, headers)
    print urlopen(request).read()
except Exception, e:
        raise Exception(e)
如果我只想要标题(标题将有响应url),我使用

我提出两个请求来获取内容&url。
如何在一个请求中同时获得这两个。如果我的函数以元组的形式返回内容和url会更好。

如果将
urlopen(request)
分配给变量,则可以在单个请求中使用这两个属性

response = urlopen(request)
request_body = response.read()
request_url  = response.geturl()
print 'URL: %s\nRequest_Body: %s' % ( request_url, request_body )

如果将
urlopen(request)
分配给一个变量,则可以在单个请求中使用这两个属性

response = urlopen(request)
request_body = response.read()
request_url  = response.geturl()
print 'URL: %s\nRequest_Body: %s' % ( request_url, request_body )

我会把你的代码重构成这样。我不知道你为什么想要捕捉异常,却又不做任何处理就再次提出它

from urllib2 import Request,urlopen

headers  = { 'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US;)' }
request  = Request(url, data, headers)
request.get_method = lambda : 'GET'
response = urlopen(request)
return response.read(), response.get_url()

如果您确实希望捕获异常。你应该把它放在
urlopen
调用中。

我会把你的代码重构成这样的东西。我不知道你为什么想要捕捉异常,却又不做任何处理就再次提出它

from urllib2 import Request,urlopen

headers  = { 'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US;)' }
request  = Request(url, data, headers)
request.get_method = lambda : 'GET'
response = urlopen(request)
return response.read(), response.get_url()

如果您确实希望捕获异常。您应该只将其放在
urlopen
调用周围。

我需要响应url,因为我请求的url可能重定向到另一个页面。我需要响应url,因为我请求的url可能重定向到另一个页面。