媒体文件取得,有两种方式:
(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
本文介绍了如何使用Python的urllib3库中的urlretrieve函数从URL下载媒体文件,并演示了如何添加回调函数来跟踪下载进度。同时,还展示了如何结合requests和lxml库进行网页抓取获取图片URL进行下载。
1880

被折叠的 条评论
为什么被折叠?



