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

Python 如何使用请求跟踪页面重定向,python,python-3.x,web-scraping,python-requests,python-requests-html,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 我想看看: 到达https://uk.yahoo.com/?p=us(很明显,当我键入https://yahoo.com最初是什么 我还想保存每个页面的内容,而不仅仅是最后一页。如何做到这一点 使用response.history。从 Response.history列

我有一个简单的代码:

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
    最初是什么

  • 我还想保存每个页面的内容,而不仅仅是最后一页。如何做到这一点


  • 使用
    response.history
    。从

    Response.history列表包含已删除的响应对象 为完成请求而创建。该列表从列表中排序 从最早的回复到最近的回复

    因此,要获得中间URL的数量,可以执行以下操作:

    response = requests.get(url)
    print(len(response.history))
    
    要了解这些URL的实际内容及其响应内容,您可以执行以下操作:

    for resp in response.history:
        print(resp.url, resp.text)
    
    如果需要,您还可以向中间URL提交新请求,并将可选参数
    allow_redirects
    设置为
    False


    r=requests.get(resp.url,allow_redirects=False)

    您希望
    请求不自动跟随重定向,以便可以查看链中的每个页面。然后,您可以继续手动跟踪它们,直到得到最终结果。请注意,在发出中间URL请求时,您不必跟踪重定向。@AndroidNoobie为什么需要使用urlib?有没有一种方法可以使用请求获取内容(我指的是页面内容)?是的,
    r=requests.get(url,allow\u redirects=False)
    。我将更新我的答案,即使它被标记为重复。要获取中间页内容,而不是
    r=requests.get(resp.url,allow_redirects=False)
    对于每个历史记录项
    resp
    ,我不能使用
    resp.text
    ,因为每个历史记录项都已经是响应对象了吗?我认为没有必要为每个历史记录项提交新的请求。它们已经是响应对象。只需从中提取数据。因此,您的答案应该是resp in response.history
    you d=just do
    print(resp.text)
    。无需对每个url执行新的get.request。请更新答案或更正我。