从Python2到Python3的DeadLink异常

时间:2014-07-15 16:08:37

标签: python python-3.x urllib2

我发现这个用Python 2.7编写的代码在读取URL列表并检索其内容时绕过了死链接:

for i in xrange(lines):
    try:
        t = urllib2.urlopen(urllib2.Request(lines[i]))
        deadlinkfound = False
    except:
        deadlinkfound = True
    if not(deadlinkfound):
        urllib.urlretrieve(lines[i], "Images/imag" + "-%s" % i)

它在Python2中运行良好,但由于urllib2合并,我无法在Python3中找到等价物。

1 个答案:

答案 0 :(得分:0)

您可以在此处使用urllib.request执行完全相同的操作。 不要抓住每一个可以想象的例外,只抓住合理抛出的东西:

from urllib import request, error
from http.client import HTTPException

for i, url in enumerate(lines):
    try:
        t = request.urlopen(request.Request(url, method='HEAD'))
    except (HTTPException, error.HTTPError):
        continue
    request.urlretrieve(url, 'Images/imag-{}'.format(i))

此代码执行相同操作,但效率更高。