Python - 处理传递给重定向处理程序的损坏的URL?

时间:2013-10-11 18:17:32

标签: python

我有一个包含几千个网址的文本文件,我试图从中获取所有重定向的网址。到目前为止,只要原始网址没有重定向到死角或断开链接,我就能够获得重定向的URL:

def get_redirect_url(url):
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler)
    request = opener.open(url)
    return request.url 
with open ('textFile.txt', 'r') as myFile:
    urls = [line.strip() for line in myFile]
    redirect_urls = [get_redirect_url(url) for url in urls]
    print redirect_urls

但是,程序偶尔会遇到“找不到页面”或完全空白页面导致程序失败。是否存在通过擦除或在程序接近时简单地绕过它们来处理这些断开的链接的解决方案?干杯全都。提前谢谢。

1 个答案:

答案 0 :(得分:2)

修改你的函数以处理异常:

def get_redirect_url(url):
    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler)
    try:
        request = opener.open(url)
        return request.url
    except urllib2.HTTPError as e:
        pass # or do something

如果发生异常,您将使用上述内容返回None - 因此您可能希望过滤掉这些内容,或者在列表中忽略它们。