代码之家  ›  专栏  ›  技术社区  ›  Kotlinboy

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

  •  0
  • Kotlinboy  · 技术社区  · 8 年前

    这是我的场景。

    我有很多链接。我想知道他们中是否有人重定向到不同的站点(可能是某个特定的站点),并且只得到那些重定向URL。(我想保存它们以备进一步刮取)。

    我不想获取网页的内容。我只想得到它重定向到的链接。如果有多个重定向,我可能希望获得URL,直到第三个重定向(因此,我不在重定向循环中)。

    我如何做到这一点? 我可以在请求中这样做吗?

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

    1 回复  |  直到 8 年前
        1
  •  0
  •   Farhan.K    8 年前

    您可以使用 requests.head(url, allow_redirects=True) 只会得到标题。如果响应具有 Location 标题它将遵循重定向和 head 下一个url。

    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