<返回更多

教你用Python批量下载静态页面图片

2020-06-11    
加入收藏

前言

生活中,经常需要在网络上查找图片素材进行引用或者自行使用,获取图片的方式不限于百度图片以及图片素材网站中进行下载。一般的网站只能手动将图片另存为,当我们需要保存大量且相同系列的图片,难道只能逐张图片以另存为的方式保存吗?相信大家非常不愿意这么做,接下来将介绍一种易学易用的方法,利用Python语言制作的网络爬虫工具批量抓取图片。

em…最近想找一些壁纸,那就来个批量下载图片吧。

作业工具

· Python 3.6或以上,下载地址:

https://www.python.org/downloads/

· 浏览器:chorme、Firefox(笔者推荐使用Firefox)

· 文本编辑器:sublime text 3

爬虫介绍

网络爬虫,也叫网络蜘蛛(Web Spider)。它根据网页地址(URL)爬取网页内容,而网页地址(URL)就是我们在浏览器中输入的网站链接。比如:https://www.baidu.com/,它就是一个URL。

讲解爬虫原理之前,我们需要先学会如何查看网页源代码(如掌握,请跳过)。

1. 审查元素(查看源代码)

这个操作非常简单。

1. 打开浏览器

2. 打开一个网页

3. 在网页空白处点击右键-查看元素(检查,或者按F12)

4. 点击“查看器”或“Elements”

教你用Python批量下载静态页面图片

左下角的“页面源代码”就叫做html,HTML也叫超文本标记语言,是这个网页的真实面貌。没错,那些五颜六色的网页真实面貌都是可读性较低的HTML,而我们的看到的是浏览器根据服务器返回的HTML的代码通过渲染显示成可读性极高的网页。

了解了HTML后,肯定想知道这些难看的HTML可以做什么,那么到了您的机器上,当然是由你说了算咯。

是的,真的可以为所欲为。(看我余额)

教你用Python批量下载静态页面图片

嗯,很明显这是假…

真相是…

教你用Python批量下载静态页面图片

顺便交大家个小技巧,因为经常依赖浏览器记住密码功能,而忘记原密码怎么办?

教你用Python批量下载静态页面图片

将密码栏处的“password”属性,修改成“text”属性。

教你用Python批量下载静态页面图片

(记住密码的选项是选不得的,毕竟可以明文显示出来。)

总结一下,HTML是由服务器接收到浏览器发送的请求,返回给浏览器的一个HTML文本,浏览器将其渲染成网页。换句话说,人由基因决定原始容貌,网页由HTML决定。人可以整容,网页也可以整,只不过网页比人更短暂,刷新就是重生(刷新会重新接收服务器发来的HTML,原来的会被抛弃,因此网页也只能在本地为所欲为)。

2. 为什么是Python

为什么选择Python来爬虫?

因为写爬虫是需要一边写,一边测试,测试不过再改改。这个过程用Python写起来最为方便,其次是Python提供了强大的第三方库,无论是巨简单的爬虫还是巨复杂的爬虫都能够轻松搞定。

爬虫需要处理的一些问题:

说到底就是因为Python在处理上面的事情的时候有很多库,而且语法简洁,代码风骚,开发者的注意点可以集中在自己要做的事情上。

简单得不能再简单的粗略不严谨地说明一下:

发送HTTP请求:

Python里我最喜欢用requests发送请求,发送请求的代码是这样的:

requests.get(URL) # GETrequests.post(URL,DATA) # 
POSTrequests.put/delete/head/... # 各种请求# P.S.使用下面的代码处理Cookie更酸爽requests.Session()

到目前为止,还没有发现其他语言有比这个更加简单的发送HTTP请求的方式了(不排除我人见识短的可能性)。

解析HTML源码:

Python默认可以使用HtmlParser来解析HTML,如果你觉得用着不爽(确实用着不爽),可以有很多第三方库来优雅地做这些事情(lxml / BeautifulSoup / ...),甚至可以通过一些库(selenium等)来直接使用浏览器。你可以直接使用类似 body.div.a['href'] 这样简单到爆的语法取自己需要的内容。

本文主要采用BeautifulSoup库来解析HTML的内容。

处理反爬虫机制:

还是Python的requests库,它可以很方便的套上一个代理IP(部分网站反爬虫机制是封IP,被封了就伪装一个好了。):

request=requests.Session()request.proxies= ....

效率:

爬虫的效率问题基本不在解析信息的速度上,网络IO的时间其实才是大头。比如你请求网页花了500ms,相应的你的解析速度是1ms还是10ms已经不重要了。

其他还有很多地方就不一一总结了,简而言之,写爬虫来讲,Python相对于其它语言的优势在于有足够简洁的语法和足够多的库支持,开发效率很高,而且运行效率方面,网络IO的时间已经大大冲淡了Python的效率问题。

用Python可以1个人做5个人的事情,只是多用10倍的机器,多么划算。

 

爬取网站图片前的准备工作

1. 安装Python

官方下载:
https://www.python.org/downloads/

教你用Python批量下载静态页面图片

勾选“Add Python 3.6 to PATH”,直接下一步,安装完成。

教你用Python批量下载静态页面图片

打开“命令提示符”,敲下“python”,启动成功。

教你用Python批量下载静态页面图片

2. 安装第三方库

既然称为第三方库了,那就是本来不是Python已有的,因此需要我们自行安装库:

安装代码:安装第三方库,在系统直接调用PIP程序安装即可。

pip install beautifulsoup4

pip install requests

教你用Python批量下载静态页面图片

至此,我们的环境就准备好了,多么简单。

 

3. 爬虫思路

爬虫主要的核心在于以下三点:

代码整合过程部分的内容将会移到《【简单易学】教你用Python批量下载静态页面图片(实战篇)》详细讲解,敬请关注!

解析网页结构

首先确认我们的目标爬取网站:https://www.socwall.com/

其次就是找到高清图片保存在什么页面里,获取到高清图片的存放地址。

最后使用代码去批量下载这些高清图片。

教你用Python批量下载静态页面图片

这一部分我们重点讲讲如何一步一步地分析网页,最终达到找到这些高清图片的存放地址。

先看看首页是什么样的~ 顺便以超市买东西为例子来分析一下,我们到底怎么找到目标商品的存放地址。

教你用Python批量下载静态页面图片

3.1 通过观察整个页面的结构,分析网页组成成分。

教你用Python批量下载静态页面图片

(上方红框是列表页,下方红框是列表页的页码)

整个页面像个货架一样展示商品,下面的页码就像是楼层号码,而货架上摆放的只是质量较差的(被压缩过的)展示商品(缩略图),因此我们要拿到货真价实的商品(目标图片)就需要到它所在的楼层,找到它摆放在货架上的地方。


 

3.2 上方列表页放置的是图片的缩略图,点击缩略图进入该缩略图的专属页面。

教你用Python批量下载静态页面图片

来到目标商品的货架前,我们发现有专属的取货窗口( 右侧的Download按钮)。


 

3.3 进入内层页面,找到了获取这张图片最终高清原图地址。

教你用Python批量下载静态页面图片

点击右侧Download按钮。

教你用Python批量下载静态页面图片

我们终于找到了货真价实的商品(目标图片),再次只需要另存为图片即可保存到本地!

OK!

获取目标数据途径

总结上述获取高清原图的过程,总结获取原图的途径:

一共四个步骤,我们的目的就算完成了,就下来的任务是使用代码来重复这个过程。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>