本帖最后由 as614001 于 2020-11-19 18:14 编辑
楼主最近是在爬图片中。
多线程的情况下,如何判断每个线程成功下载/上传图片。因为是远程主机,多线程下有一定几率是被反爬403的。10个图片一般会出现2次反爬。
是在线程里面做循环判断?[Python] 纯文本查看 复制代码 class DownLoadThread(threading.Thread): //继承threading.Thread类
def __init__(self, url): //重写__init__方法,并对__init__方法传递参数url
super(DownLoadThread, self).__init__() //继承父类的__init__的方法
self.url = url //将url与传进来的参数绑定
def run(self): //重写run方法
try: //异常捕获
urlobj = urlopen(self.url, timeout=3) 打开url链接,若3秒后未响应,则关闭函数
except Exception as e:
print("下载%s失败" % url)
imgContent = None
else:
fileName = url.split("/")[-1] //获取文件名
with open("%s/%s" % (DOWNLOAD_DIR, fileName), "ab") as f: //以追加二进制数据的方式打开文件,若文件不存在则新建文件
while True:
imgContentChunk = urlobj.read(1024*3) //每次只读取3k文件,避免文件过大,电脑死机
if not imgContentChunk: //如果文件全部读取则退出函数
break
f.write(imgContentChunk) //将数据写入本机文件中
print("%s下载成功"%(fileName))
|