最近在跟一哥们儿爬网络图片数据,整理了相关现在的模块,话不多说,上原理,上代码
01
环境准备
Python3.x requests包
02
原理
requests get请求
用法如下
以下是requests的一些返回值:
r.text 返回headers中的编码解析的结果,可以通过r.encoding = 'gbk'来变更解码方式
r.content返回二进制结果 (在scrapy里面对应Response.body),下载网页内容用
r.json()返回JSON格式,可能抛出异常
r.status_code
r.raw返回原始socket respons,需要加参数stream=True
我们下载图片需要用到的是r.content,返回网页内容的二进制结果,然后写入到本地就可以了
03
代码实现
首先我们到百度图片里找一张图,如下
在网页里我们获取这张图片的url(不会自行百度)
图片url如下
导入相关的包
第一个包是requests包,上面已经做了介绍,第二个包用于图片url生成对应的md5值,这个图片命名要用到,第三个很常见的os包,用于获取当前工作路径!
获取当前工作路径
构造md5函数
对图片url进行请求,并获取二进制数据
图片保存路径,在这里用到了刚才的构造函数,根据url生成图片前缀名
写入文件
到这里图片下载的整个流程就完成了,如图
下面是完成代码
注:有读者可能会疑问,下一张图片还用写代码那么费事儿,在这里我说明下,这只是个Demo,将改程序封装成一个接口,循环请求的话,可以省不少时间,但是这个只能针对几十张图,因为是单线程请求,有一些限制,如果要批量下载图片,可以运行scrapy分布式爬虫进行稍微的修改就可以!
致大家
感觉好久没有更新了,最近发生了好多事,自己在跟网上认识的老哥在接外包,也没有写公众号,在这里说声抱歉!转眼间已经是2019年了,祝大家在2019年能够取得很好的成绩!
领取专属 10元无门槛券
私享最新 技术干货