Python爬虫:轻松拿捏网络图片与视频下载

一、引言

在现今数字化世界中,网络就如同一座深藏丰富信息的宝矿,Python爬虫则如同我们的金手指,引导我们挖掘出其中的宝藏。无论是为了科研收集大量图像数据,为设计项目寻找灵感素材,还是单纯想收藏一些有趣的网络视频,Python爬虫都能帮我们实现这个目标,实现批量且高效的下载网络图片和视频。接下来,我们将揭开Python爬虫的神秘面纱,深入探讨如何使用它来实现这个操作。

需求:将百度logo下载到本地

思路分析

  1. logourl地址:https://www.baidu.com/img/bd_logo1.png

  2. 利用requests模块发送请求并获取响应

  3. 使用二进制写入的方式打开文件并将response响应内容写入文件内

import requests

# 图片的url
url = 'https://www.baidu.com/img/bd_logo1.png'

# 响应本身就是一个图片,并且是二进制类型
response = requests.get(url)

# print(r.content)

# 以二进制写入的方式打开文件
with open('baidu.png', 'wb') as f:
    # response.content: bytes二进制类型
    f.write(response.content)

如果下载一个较大的资源,例如一个视频,可能需要的下载时间较长,在这个较长的下载过程中程序是不能做别的事情的(当然可以使用多任务来解决),如果在不是多任务的情况下,想要知道下载的进度,此时就可以通过类似迭代的方式下载部分资源。

1.使用iter_content

在获取数据时,设置属性stream=True

r = requests.get('https://www.baidu.com', stream=True)

with open('test.html', 'wb') as f:
    for chunk in r.iter_content(chunk_size=100):
        f.write(chunk)

2.stream=True说明:

  • 如果设置了stream=True,那么在调用iter_content方法时才会真正下载内容
  • 如果没设置stream属性则调用requests.get就会耗费时间下载

3.显示视频下载进度

# pip install tqdm

import requests
from tqdm import tqdm


def download_video(url, save_path):
    response = requests.get(url, stream=True)
    # 获取视频资源大小
    total_size = int(response.headers.get('content-length', 0))

    # 初始化下载大小
    downloaded_size = 0

    # unit: 下载单位(字节)
    # unit_scale: 自动调整单位
    # unit_divisor: 单位换算(除数为1024)
    with open(save_path, 'wb') as file, tqdm(total=total_size, unit='B', unit_scale=True, unit_divisor=1024) as bar:
        for chunk in response.iter_content(chunk_size=1024):
            if chunk:
                file.write(chunk)
                downloaded_size += len(chunk)
                bar.update(len(chunk))

    print("下载完成...")


# 调用下载函数
video_url = "你要下载的视频资源地址"
path = "video.mp4"
download_video(video_url, path)

总的来说,Python爬虫在当今数字化时代中扮演着重要的角色,它能够帮助我们更高效地获取和利用网络信息。通过掌握Python爬虫技术,我们可以更好地满足各种需求,如科研、设计项目、信息收集等。因此,我鼓励你尝试学习并使用Python爬虫,相信你一定能从中受益匪浅。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值