1. 引入第三方模块
1.1 引入threading模块:
import threading
1.2 引入urlopen:
from urllib.request import urlopen
2. 创建DownLoadThread类
2.1
class DownLoadThread(threading.Thread): //继承threading.Thread类
def __init__(self, url): //重写__init__方法,并对__init__方法传递参数url
super(DownLoadThread, self).__init__() //继承父类的__init__的方法
self.url = url //将url与传进来的参数绑定
def fun(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))
3. 传入链接列表
3.1 urls = [url1, url2, url3]
4. 多线程执行下载任务
4.1
for url in urls:
thread = DownLoadThread(url)
thread.start()