Bis*_*ash 22 python redirect http-status-codes python-requests
我正在尝试捕获重定向URL的http状态代码3XX/302.但我无法得到它,因为它提供了200个状态代码.
这是代码:
import requests
r = requests.get('http://goo.gl/NZek5')
print r.status_code
Run Code Online (Sandbox Code Playgroud)
我想这应该发出301或302,因为它重定向到另一个页面.我曾经尝试过几次重定向网址(例如http://fb.com),但它又发布了200.应该怎样做才能正确捕获重定向代码?
Mar*_*ers 51
requests
处理重定向你,看重定向和历史.
allow_redirects=False
如果您不想requests
处理重定向,请设置,或者您可以检查r.history
列表中包含的重定向响应.
演示:
>>> import requests
>>> r = requests.get('http://goo.gl/NZek5')
>>> r.history
(<Response [301]>,)
>>> r.history[0].status_code
301
>>> r.history[0].headers['Location']
'http://docs.python-requests.org/en/latest/user/quickstart/'
>>> r.url
u'http://docs.python-requests.org/en/latest/user/quickstart/'
>>> r = requests.get('http://goo.gl/NZek5', allow_redirects=False)
>>> r.status_code
301
>>> r.url
u'http://goo.gl/NZek5'
Run Code Online (Sandbox Code Playgroud)
因此,如果allow_redirects
是True
,则已遵循重定向,并且返回的最终响应是在重定向之后的最后一页.如果allow_redirects
是False
,则返回第一个响应,即使它是重定向.
Geo*_*hij 10
requests.get
允许使用allow_redirects
默认的可选关键字参数True
.设置allow_redirects
为False
将在重定向后自动禁用,如下所示:
In [1]: import requests
In [2]: r = requests.get('http://goo.gl/NZek5', allow_redirects=False)
In [3]: print r.status_code
301
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25499 次 |
最近记录: |