当服务器使用urllib2.urlopen(url).geturl()重定向我时,我无法获取整个URL

时间:2015-03-10 17:01:30

标签: python urllib2

例如,如果整个网址为'http://www.stackoverflow.com',我只能获得'http://www.stackoverflow.com?key=value&key1=value1'

1 个答案:

答案 0 :(得分:0)

urllib2 在重定向后删除查询字符串:

>>> import urllib2
>>> r = urllib2.urlopen('http://httpbin.org/redirect-to?url=http://example.com/%3Ffoo=bar')
>>> r.geturl()
'http://example.com/?foo=bar'

也许您正在使用一个网站,在带有查询字符串的请求中再次重定向

您可以使用requests library代替;您可以完全禁用重定向,也可以反省重定向的历史记录:

>>> import requests 
>>> r = requests.get('http://httpbin.org/relative-redirect/4')
>>> r.history
[<Response [302]>, <Response [302]>, <Response [302]>, <Response [302]>]
>>> r.history[2].url
u'http://httpbin.org/relative-redirect/2'