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 doprint(resp.text)
。无需对每个url执行新的get.request。请更新答案或更正我。