python requests下载图片_Python使用urllib库、requests库下载图片的方法比较

我们知道,使用Python制作一个爬虫程序,requests库是一个不错的选择,requests发送网络请求非常简单,比较使用urllib库,使用requests库可以大大减少代码量,它还可以定制请求头,这对于爬虫程序来说是个非常好的功能。再者,使用requests库时,requests库会自动解码来自服务器的内容,而且,大多数的 unicode 字符都能被无缝地解码,因此,可以避免大多数因为编码造成的问题。今天,我们来看看使用requests如何下载网络图片到本地。

使用urllib库下载图片方法探讨

我们知道,使用urllib库可以下载图片,我们对urllib库下载图片进行梳理。具体方法如下。

# jpg_url: 下载图片网址

# file_path: 文件路径及名称

from urllib import request

request.urlretrieve(jpg_link, file_path)

这样指定图片就下载到本地目录。对于一般服务器没有反爬措施的可以使用这种方法下载。但是,没有这么简单,今天,我们下载一张妹子图里面的照片。具体美女的图片我就不贴出来了,网页源代码如下。

d31b0ef41bd5ad6ed386f20afdc790dfb7fd3ce7.jpeg?token=74b53b78bcb1ac69d163ac586809db6e&s=6900E81A3CAE570D12F849DE000010B0图片地址

想这种图片一般是不好获取真实图片地址的,我们试试使用urllib库不加头文件直接下载看看。

11385343fbf2b2114a7ed700b18ccc3c0cd78e39.jpeg?token=b296771f1202dd0325543bce365faedc&s=2DC0E9139BBFD5CE5C5CA1D0030070B3出错了!

哦哦,文件下载出错了,服务器拒绝了我们。下面,我们加入请求头看一下结果。

# coding:utf-8

import urllibfrom urllib import request

header = {'Referer':'妹子图主页地址(自己修改)', 'User-Agent':'根据需要自己浏览器添加(机器人以为这个是电话号码,真让人欲哭无泪)' }req = urllib.request.Request("此处图片地址略去", headers = header)req = urllib.request.urlopen(req)with open('meizi.jpg', 'wb') as f: f.write(req.read())

加上请求头之后文件下载成功。但是请注意,这种方法是使用urlopen()打开Request对象,之后,将对象流保存在本地。

使用requests库下载图片的方法探讨

同一张图片,我们使用requests库再下载一次。毋庸置疑,使用requests库下载也是要加入headers的,不然,肯定也是被拒绝咯。我们加入header看一下。

8c1001e93901213f799de3f62feb9fd52f2e957b.jpeg?token=6a47827445314984d00084ffc8ef2320&s=0D86E91311FFC1CC187C04DE0000C0B3requests库执行成功

个人觉得使用requests比使用urllib方便一点,首先从代码量上面就有优势;其次,在处理unicode字符时requests也比较占优势,在多数案例中,urllib里面报错的放到requests中可能就很好的解决了,建议大家多实验,从而总结一个个人常用的库的使用方法,这样对以后编写爬虫程序是大有裨益的……

好了今天就到这里了!最后,送一张福利给各位……

42a98226cffc1e17e3b8cce8309c5f07728de9f1.jpeg?token=1db6c695c700a2d9fc2ccb39ace38ba8&s=B931CD10C60172F4C728D0DF0300C0A0妹子图片

欢迎大家留言讨论。转载请注明出处(百家号:Python高手养成)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值