我有这个简单的代码:
import requests
r = requests.get('https://yahoo.com')
print(r.url)
执行后打印:
https://uk.yahoo.com/?p=us
我想看:
在到达https://uk.yahoo.com/?p=us
之前发生了多少重定向(显然,当我最初输入https://yahoo.com
时存在重定向)?
我还想保存每一页的内容,而不仅仅是最后一页。该怎么做?
答案 0 :(得分:3)
使用response.history
。从documentation ...
Response.history列表包含以下响应对象: 创建以完成请求。该列表从 从最早到最新的响应。
因此,要获取中间URL的数量,您可以执行以下操作:
response = requests.get(url)
print(len(response.history))
要了解这些URL的实际含义及其响应包含的内容,可以执行以下操作:
for resp in response.history:
print(resp.url, resp.text)
如果需要,您还可以将可选参数allow_redirects
设置为False
来向中间URL提交新请求:
r = requests.get(resp.url, allow_redirects=False)