如何使用请求来跟踪页面重定向

时间:2019-02-28 08:15:19

标签: python python-3.x web-scraping python-requests python-requests-html

我有这个简单的代码:

import requests
r = requests.get('https://yahoo.com')
print(r.url)

执行后打印:

https://uk.yahoo.com/?p=us

我想看:

  1. 在到达https://uk.yahoo.com/?p=us之前发生了多少重定向(显然,当我最初输入https://yahoo.com时存在重定向)?

  2. 我还想保存每一页的内容,而不仅仅是最后一页。该怎么做?

1 个答案:

答案 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)