5.2.媒体文件取得

本文介绍了如何使用Python的urllib3库中的urlretrieve函数从URL下载媒体文件,并演示了如何添加回调函数来跟踪下载进度。同时,还展示了如何结合requests和lxml库进行网页抓取获取图片URL进行下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

媒体文件取得,有两种方式:

(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值