0

如何在单个请求中获取 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),我使用

try:
    headers  = { 'User-Agent' : 'Mozilla/5.0 (X11; U; Linux i686; en-US;)' }
    request  = Request(url, data, headers)
request.get_method = lambda : 'HEAD'
    print urlopen(request).geturl()
    except Exception, e:
        raise Exception(e)

我正在发出两个请求以获取内容和网址。我如何在一个请求中同时获得两者。如果我的函数将内容和 url 作为元组返回,那就更好了。

4

2 回答 2

4

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

response = urlopen(request)
request_body = response.read()
request_url  = response.geturl()
print 'URL: %s\nRequest_Body: %s' % ( request_url, request_body )
于 2013-02-08T18:14:40.360 回答
0

我会把你的代码重构成这样的。我不知道你为什么要捕获异常只是为了再次引发它而不对其做任何事情。

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电话周围。

于 2013-02-08T18:18:04.657 回答