这是我的情景。
我有很多链接。我想知道他们中的任何一个是否重定向到另一个站点(可能是一个特定的站点)并且只获得那些重定向URL。(我想保留它们以进一步抓取)。
我不想获取网页内容。我只想获得它重定向到的链接。如果有多个重定向,我可能想要获取网址直到说出第3个重定向(所以,我不在重定向循环中)。
我如何实现这一目标? 我可以在请求中执行此操作吗?
请求似乎有一个r.status
,但它只在获取页面后才有效。
答案 0 :(得分:0)
您可以使用只会获得标题的requests.head(url, allow_redirects=True)
。如果回复具有Location
标题,则会在重定向后跟随head
下一个网址。
import requests
response = requests.head('http://httpbin.org/redirect/3', allow_redirects=True)
for redirect in response.history:
print(redirect.url)
print(response.url)
输出:
http://httpbin.org/redirect/3
http://httpbin.org/relative-redirect/2
http://httpbin.org/relative-redirect/1
http://httpbin.org/get