Python 下载图片

最近在跟一哥们儿爬网络图片数据,整理了相关现在的模块,话不多说,上原理,上代码

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年能够取得很好的成绩!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190119G0F8LE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券