urllib3报错问题解决方法

2025-09-26 13:09:46

1、原始代码如下:

import urllib3def download(url,num_retries=2):    print('Downloading:',url)    try:        html = urllib3.urlopen(url).read()    except urllib3.URLError as e:        print('Downloading error:',e.reason)        html = None        if num_retries > 0:            if hasattr(e,'code') and 500<=e.code<600:                #recursively retry 5xx HTTP errors                return download(url,num_retries-1)        return htmldownload('http://httpstat.us/500')

(注释:这段代码在urllib2中使用是没有问题的,换成urllib3使用报错如下:)

urllib3报错问题解决方法

2、结果就报错了:

AttributeError: module 'urllib3' has no attribute 'urlopen'AttributeError: module 'urllib3' has no attribute 'URLError'

urllib3报错问题解决方法

3、原因是:urllib3将所有的urllib都打包为urllib

所以代码应修改为:urllib.request

修改后的代码如下:

import urllib.requestdef download(url,num_retries=2):    print('Downloading:',url)    try:        html = urllib.request.urlopen(url).read()    except urllib.request.URLError as e:        print('Downloading error:',e.reason)        html = None        if num_retries > 0:            if hasattr(e,'code') and 500<=e.code<600:                #recursively retry 5xx HTTP errors                return download(url,num_retries-1)        return htmldownload('http://httpstat.us/500')

urllib3报错问题解决方法

4、运行结果如下:完美解决问题

urllib3报错问题解决方法

5、如果对你有用话给过投个票呗!!!

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢