我正在尝试捕获重定向 url 的 http 状态代码 3XX/302。但我无法获取它,因为它给出了 200 状态代码。
这是代码:
import requests
r = requests.get('http://goo.gl/NZek5')
print r.status_code
我想这应该发出 301 或 302,因为它重定向到另一个页面。我尝试了几个重定向网址(例如http://fb.com http://fb.com)但它再次发出 200。应该怎样做才能正确捕获重定向代码?
requests
处理重定向for you, see 重定向和历史记录 https://requests.readthedocs.io/en/latest/user/quickstart/#redirection-and-history.
Set allow_redirects=False
如果你不想requests
处理重定向,或者您可以检查包含在r.history list https://requests.readthedocs.io/en/latest/api/#requests.Response.history.
Demo:
>>> import requests
>>> url = 'https://httpbin.org/redirect-to'
>>> params = {"status_code": 301, "url": "https://stackoverflow.com/q/22150023"}
>>> r = requests.get(url, params=params)
>>> r.history
[<Response [301]>, <Response [302]>]
>>> r.history[0].status_code
301
>>> r.history[0].headers['Location']
'https://stackoverflow.com/q/22150023'
>>> r.url
'https://stackoverflow.com/questions/22150023/http-redirection-code-3xx-in-python-requests'
>>> r = requests.get(url, params=params, allow_redirects=False)
>>> r.status_code
301
>>> r.url
'https://httpbin.org/redirect-to?status_code=301&url=https%3A%2F%2Fstackoverflow.com%2Fq%2F22150023'
So if allow_redirects
is True
,已遵循重定向,返回的最终响应是遵循重定向后的最终页面。如果allow_redirects
is False
,返回第一个响应,即使它是重定向。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)