Python考试题--第71道题目--通过url采取多线程下载音频文件,并储存--2022年04月26日

原创
小哥 3年前 (2022-10-29) 阅读数 5 #大杂烩

目录

1.话题要求:

2.实战代码演示:

1、urls.txt文件

2、读取urls.txt中每一行url,添加到列表中。

3,创建线程类。

4,创建一个下载图片的函数,方便线程类的使用。


1.话题要求:

在urls.txt该文件包含几个图像。Url,一次一行Url,使用多线程下载这些图像文件,然后按Url出现的顺序被保存0.jpg、1.jpg、2.jpg以此类推。

2.实战代码演示:

1、urls.txt文件

https://img10.360buyimg.com/n1/jfs/t23722/106/2427071620/128371/2d7b202a/5b7e6e0bNc42f7eea.jpg
http://img3m7.ddimg.cn/7/6/1468712527-1_b_1.jpg
http://img3m8.ddimg.cn/87/34/25163808-1_b_1.jpg
http://img3m8.ddimg.cn/11/8/23830598-1_b_1.jpg
http://img3m1.ddimg.cn/71/7/23043311-1_b_1.jpg

2、读取urls.txt中每一行url,添加到列表中。

3,创建线程类。

4,创建一个下载图片的函数,方便线程类的使用。

from django import http
from urllib3 import *
import threading

http = PoolManager()
disable_warnings()

f = open(rD:python_workinterviewmianshi100urls.txt,r) 
# window尽量不要在系统中使用相对路径,需要使用绝对路径,有时认为不在这个目录中。
# 在字符串之前加上一个反斜杠。main加上r,不会被认为是一种逃避。
# f = open(url.txt,r)
urllist = []
while True:
    url = f.readline()
    if url == :
        break
    urllist.append(url.strip())
f.close()
print(urllist)

class DownloadTread(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") # 因为图片是二进制的,所以添加“b”。
    f.write(response.data)
    f.close()
    print(<,url,>,下载完成。)

for i in range(len(urllist)):
    thread = DownloadTread(download,(str(i)+.jpg,urllist[i]))
    thread.start()

执行结果如下:

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除