在单个请求中获取http请求的内容以及响应URL

时间:2013-02-08 18:09:27

标签: 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()
except Exception, e:
        raise Exception(e)

如果我只想要标题(标题会有响应网址),我使用了

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作为更好的元组。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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电话附近。