是否可以仅遵循重定向状态代码并获取重定向链接,而不是在请求或其他Python库中下载网页页面?

时间:2017-11-24 11:02:15

标签: python web-scraping python-requests url-redirection

这是我的情景。

我有很多链接。我想知道他们中的任何一个是否重定向到另一个站点(可能是一个特定的站点)并且只获得那些重定向URL。(我想保留它们以进一步抓取)。

我不想获取网页内容。我只想获得它重定向到的链接。如果有多个重定向,我可能想要获取网址直到说出第3个重定向(所以,我不在重定向循环中)。

我如何实现这一目标? 我可以在请求中执行此操作吗?

请求似乎有一个r.status,但它只在获取页面后才有效。

1 个答案:

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