67 - 用多线程从网上下载图像文件
【摘要】 在urls.txt 文件中包含了若干个图像url,一行一个url,请使用多线程下载这些图像文件,并按url出现的顺序保存为 0.jpg、1.jpg、2.jpg,以此类推
urls.txt
https://photo.16pic.com/00/26/41/16pic_2641402_b.jpg
https://photo.16pic.com/00/21/52/16pi...
在urls.txt 文件中包含了若干个图像url,一行一个url,请使用多线程下载这些图像文件,并按url出现的顺序保存为 0.jpg、1.jpg、2.jpg,以此类推
urls.txt
https://photo.16pic.com/00/26/41/16pic_2641402_b.jpg
https://photo.16pic.com/00/21/52/16pic_2152258_b.jpg
https://photo.16pic.com/00/44/47/16pic_4447412_b.jpg
https://photo.16pic.com/00/20/47/16pic_2047443_b.jpg
- 1
- 2
- 3
- 4
from urllib3 import *
import threading
import os
http = PoolManager()
disable_warnings()
f = open('./files/urls.txt', 'r')
urlList = []
while True: url = f.readline() if url == '': break urlList.append(url.strip())
f.close()
# print(urlList)
class DownloadThread(threading.Thread): def __init__(self, func, args): super().__init__(target=func, args=args) def download(filename, url): response = http.request('GET', url) f = open(filename, 'wb') f.write(response.data) f.close print('<', url, '>', '下载完成') root = './files/img'
if not os.path.exists(root): os.makedirs(root) for i in range(len(urlList)): filename = root + '/' + str(i) + '.jpg' thread = DownloadThread(download, (filename, urlList[i])) thread.start()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
< https://photo.16pic.com/00/20/47/16pic_2047443_b.jpg > 下载完成
< https://photo.16pic.com/00/26/41/16pic_2641402_b.jpg > 下载完成
< https://photo.16pic.com/00/21/52/16pic_2152258_b.jpg > 下载完成
< https://photo.16pic.com/00/44/47/16pic_4447412_b.jpg > 下载完成
- 1
- 2
- 3
- 4
文章来源: ruochen.blog.csdn.net,作者:若尘,版权归原作者所有,如需转载,请联系作者。
原文链接:ruochen.blog.csdn.net/article/details/104885859
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)