解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度
import urllib
from urllib.request import urlretrieve
#解决urlretrieve下载文件不完全的问题且避免下载时长过长陷入死循环
def auto_down(url,filename):
try:
urlretrieve(url,filename,jindu)
except socket.timeout:
count = 1
while count <= 15:
try:
urlretrieve(url, filename,jindu)
break
except socket.timeout:
err_info = 'Reloading for %d time' % count if count == 1 else 'Reloading for %d times' % count
print(err_info)
count += 1
if count > 15:
print("下载失败")
#urlretrieve()的回调函数,显示当前的下载进度
#a为已经下载的数据块
#b为数据块大小
#c为远程文件的大小
global myper
def jindu(a,b,c):
if not a:
print("连接打开")
if c<0:
print("要下载的文件大小为0")
else:
global myper
per=100*a*b/c
if per>100:
per=100
myper=per
print("当前下载进度为:" + '%.2f%%' % per)
if per==100:
return True
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度
原文链接:https://www.stubbornhuang.com/33/
发布于:2019年10月24日 22:31:00
修改于:2019年11月14日 22:55:01
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52