分享

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

 flyk0tcfb46p9f 2019-04-14

我们知道,使用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)

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

图片地址

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

出错了!

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

# coding:utf-8

import urllib

from 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看一下。

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多