繁体   English   中英

如何修改“下载”功能以与301/302重定向一起使用?

[英]How do I modify my “download” function to work with 301/302 redirects?

def download(source_url):
    try:
        socket.setdefaulttimeout(20)
        agents = ['Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1041.0 Safari/535.21','Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0']
        ree = urllib2.Request(source_url)
        ree.add_header('User-Agent',random.choice(agents))
        resp = urllib2.urlopen(ree)
        htmlSource = resp.read()
        return htmlSource
    except Exception, e:
        print e
        return ""

我写了这个下载功能。 如何使其与301/302一起使用?

例如: http : //tumblr.com/tagged/long-reads我的功能不适用于此网址。

首先,您必须获取HTTP响应代码,请看this

如果代码是30x,则必须获取新的url,请看this

然后,您可以使用新的URL递归调用函数download()。

您还应该添加一个参数作为重定向计数器,以避免无限循环。

如果返回了重定向(301/2)代码,则urllib2 应该自动跟随该重定向。

看看这个相关的问题 如果您不遵循重定向,本文将详细研究重定向处理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM