Python 爬虫学习笔记(二)urllib下载图片和视频

一、urllib的1个类型和6个方法

1. response的类型

我们打印一下urllib.request方法获取的response是什么类型

import urllib.request

url = "http://www.baidu.com"

response = urllib.request.urlopen(url)

print(type(response))

结果是’HTTPResponse类型,暂且记住,是为了和之后的requests库区分开。
在这里插入图片描述

2. 6个方法

6个方法都是对response而言的:

  1. response.read() :特点是一字节一字节去读,效率低
content = response.read()  # 全部读取

content = response.read(5) # 表示只读前5个字节
  1. response.readline() :读取(第)一行
content = response.readline()
  1. response.readlines() :读取所有行,列表储存(类似文件的读取)
content = response.readlines() # 返回的是列表
  1. response.getcode():获取状态码
print(response.getcode()) # 返回200表示访问成功,逻辑正确
  1. response.geturl():获取url地址
print(response.geturl())  # 基本没什么用
  1. response.getheaders():获取状态信息(响应头)
print(response.getheaders()) # 列表类型,元素都是元组形式

二、使用urllib进行下载

用到的函数是urllib.request.urlretrieve(url=?,filename=?)

参数url即我们要下载的资源的url地址,filename即我们要保存到本地的文件名。

下面分别以下载网页、图片和视频为例:

1. 下载网页
url_page = "http://www.baidu.com"

urllib.request.urlretrieve(url_page, 'baidu.html')

运行上述代码后,在项目目录下发现多了’baidu.html’,下载成功
在这里插入图片描述

2. 下载图片

以网络图片为例,如图复制图片url地址
在这里插入图片描述

url_img = "https://img2.baidu.com/it/u=3998891405,3474278461&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500"

urllib.request.urlretrieve(url_img, 'jenny.jpg')

运行上述代码后,在项目目录下发现多了’jenny.jpg’,下载成功
在这里插入图片描述
大家可能和我有一样的疑问,手动下载它不香吗?

我总结的原因如下:

  1. 当需要下载的图片特别多时,例如成千上万,手动下载肯定比不上程序
  2. 我们往往得不到资源的url,没有办法直接手动下载。爬取后的解析操作为的就是获取有用的信息,例如想要下载图片的url。
3. 下载视频

以网络视频为例,F12获取视频下载的src
在这里插入图片描述

url_video = "https://vd4.bdstatic.com/mda-ncabdxs3k2mkjq3g/sc/cae_h264_delogo/1646986556076827915/mda-ncabdxs3k2mkjq3g.mp4?v_from_s=hkapp-haokan-tucheng&auth_key=1647146550-0-0-a2c5e5ba902195ad44640e87df20b352&bcevod_channel=searchbox_feed&pd=1&cd=0&pt=3&logid=0750870118&vid=12970100849765423858&abtest=100815_2-17451_1&klogid=0750870118"

urllib.request.urlretrieve(url_video, 'video.mp4')

运行上述代码后,在项目目录下发现多了’video.mp4’,下载成功, 并且能正常播放。
在这里插入图片描述
全部代码:

import urllib.request

# 下载网页
url_page = "http://www.baidu.com"

urllib.request.urlretrieve(url_page, 'baidu.html')

# 下载图片
url_img = "https://img2.baidu.com/it/u=3998891405,3474278461&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500"

urllib.request.urlretrieve(url_img, 'jenny.jpg')

# 下载视频
url_video = "https://vd4.bdstatic.com/mda-ncabdxs3k2mkjq3g/sc/cae_h264_delogo/1646986556076827915/mda-ncabdxs3k2mkjq3g.mp4?v_from_s=hkapp-haokan-tucheng&auth_key=1647146550-0-0-a2c5e5ba902195ad44640e87df20b352&bcevod_channel=searchbox_feed&pd=1&cd=0&pt=3&logid=0750870118&vid=12970100849765423858&abtest=100815_2-17451_1&klogid=0750870118"

urllib.request.urlretrieve(url_video, 'video.mp4')

总结

  1. 通过urllib.request.urlopen()获取到的response是HTTPResponse类型,要和后面的requests库区分开。
  2. urlretrieve的两个参数分别是下载资源的url,和下载资源的命名。
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

湫兮如风i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值