【问题标题】:How to determine if a page is being redirected如何确定页面是否被重定向
【发布时间】:2010-09-24 19:34:28
【问题描述】:

我需要在不实际下载内容的情况下检查页面是否被重定向。我只需要最终的 URL。最好的方法是 Python 吗? 谢谢!

【问题讨论】:

    标签: python http http-headers


    【解决方案1】:

    如果您特别想避免下载内容,则需要使用 HEAD 请求方法。我相信 urlliburllib2 库不支持 HEAD 请求,因此您必须使用较低级别的 httplib 库:

    import httplib
    
    h = httplib.HTTPConnection('www.example.com')
    h.request('HEAD', '/')
    response = h.getresponse()
    
    // Check for 30x status code
    if 300 <= response.status < 400:
        // It's a redirect
        location = response.getheader('Location')
    

    【讨论】:

    • 太棒了。我试图强迫 urllib/urllib2 在没有太多运气的情况下这样做,而且 httplib 的文档并不是最好的。谢谢!
    • @Adam 看起来你可以用urllib2 做到这一点。见here
    【解决方案2】:

    当您打开带有 urllib2 的 URL 并被重定向时,您会获得 30x 的重定向状态。检查信息以查看您被重定向到的位置。您无需阅读页面即可阅读回复中的info()

    【讨论】:

    • urllib2 是否为您提供了一种发出 HEAD 命令的方法?这通常是获取您需要的信息的方式,而无需传输页面内容的网络开销。
    • 您不必阅读该页面。您的响应包括一个您可以简单地关闭的套接字。
    • 是的,但您仍然会产生网络流量。 HEAD 的重点是不引起网络流量。
    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    相关资源
    最近更新 更多