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

前言
生活中,经常需要在网络上查找图片素材进行引用或者自行使用,获取图片的方式不限于百度图片以及图片素材网站中进行下载 。一般的网站只能手动将图片另存为,当我们需要保存大量且相同系列的图片,难道只能逐张图片以另存为的方式保存吗?相信大家非常不愿意这么做,接下来将介绍一种易学易用的方法,利用Python语言制作的网络爬虫工具批量抓取图片 。
em…最近想找一些壁纸,那就来个批量下载图片吧 。
作业工具
· Python 3.6或以上,下载地址:
【教你用Python批量下载静态页面图片】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提供了强大的第三方库,无论是巨简单的爬虫还是巨复杂的爬虫都能够轻松搞定 。
爬虫需要处理的一些问题:
  • 发送HTTP请求
  • 解析HTML源码
  • 处理反爬虫机制
  • 效率
  • ......
说到底就是因为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的内容 。
处理反爬虫机制:


推荐阅读