Python(多线程实现下载器)

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()

猜你喜欢

转载自blog.csdn.net/qq_43281189/article/details/86557891
今日推荐