媒体文件取得,有两种方式:
(1)只获取文件的url链接
(2)直接将媒体文件下载到本地
5.2.1.urllib3的urlretrieve
urllib3
库中的 urlretrieve
函数用于从指定的 URL 中检索文件,并将其保存到本地文件系统中。以下是关于 urllib3.urlretrieve
函数的详细讲解:
1.功能:从指定的 URL 中检索文件,并将其保存到本地文件系统中。
2.语法:
urllib3.urlretrieve(url, filename, reporthook=None, data=None)
url
:要检索文件的 URL。filename
:要保存到的本地文件路径。reporthook
:可选参数,用于指定一个回调函数,在下载过程中会被多次调用,用于显示下载进度或其他信息。data
:可选参数,用于指定要发送到服务器的附加数据(例如 POST 请求的数据)。
3.返回值:函数会返回一个包含 (filename, headers)
的元组,其中 filename
是本地文件路径,headers
是一个类似于字典的对象,包含了响应的 HTTP 头信息。
例:
import urllib.request
from lxml import etree
import requests
def Schedule(blocknum, blocksize, totalsize):
'''
blocknum:已经下载的数据块
blocksize:数据块的大小
totalsize:远程文件的大小
'''
per = 100 * blocknum * blocksize / totalsize
if per > 100 :
per = 100
print("当前下载进度:%d"%per)
user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'
headers = { 'User-Agent' : user_agent }
r = requests.get(r'https://www.baidu.com', headers = headers)
html = etree.HTML(r.content)
img_urls = html.xpath('.//img/@src')
i = 0
for img_url in img_urls:
urllib.request.urlretrieve(img_url, r'xxxx\xxx\test\img'+str(i)+'.jpg', Schedule)
i += 1