学了python不知干啥?爬爬虫!(1)爬取网络图片
生活就像淋浴:方向转错,水深火热 ——意林
引言
各位玩python的,相比对“爬虫”这个字眼并不陌生。啥?你不知道?对啦,就是需要一个不知道的……
那么,咱们的第一件事就是……
概念
上来一手概念,恐怕这是最劝退的了
咱们还是先来看看它能干啥吧
这只虫,能干嘛?
- 不打开网页,下载图片啦
- 不打开网页,看看小说啦
- 或者保存点贴吧贴子啦,图片啦
- 等等……
什么,你说:那我要这玩意儿干嘛?我打开网页不是更快吗?
同志,男人不能一味追求快……不对,是有些事情你打开网页也不好干……
例如:
- 获取某乎所有用户年龄组成、性别比例(诶?怎么有点像生物)
- 获取某地区程序员平均工资
- …
但是,这些,爬虫都可以干!
那么,让我们愉快的开始吧!
环境
author:FunnySaltyFish
python:3.6
win7 x86
搞张图片
首先,让我们打开百度图片,这样搜索:
然后在你看到的这张可爱的图片上,单击右键——复制图片地址
(此处使用的是360毒瘤浏览器,是的没错,360。不推荐你使用这玩意儿。其他浏览器应该也有此功能,找到类似的就好)
(如果你是手机编程党,比如我,推荐使用via。这款0.5M的浏览器却十分强大,包括了后面的教程中我们要使用到的网页源码查看和网页调试【安装插件的情况下】)
接下来,我们肝代码!
代码
直接上!
1 | import urllib.request as ur |
短?没错,就是这么短!
我们来看看这个代码干了些什么
1 | import urllib.request as ur |
1.很明显,这玩意就是一个导库
urllib是Python自带的标准库,无需安装,直接可以使用。
提供了如下功能:
-网页请求
-响应获取
-代理和cookie设置
-异常处理
-URL解析
简而言之,这是python官方提供的简单易上手但功能强大的库
至于它的功能,嘿嘿,我们就先不多扯了,后面再慢慢看。先往下看
1 | #打开网页 |
此处的url就是刚刚复制的图片地址,而后面的urlopen就是打开这个url啦
它的用法如下:
1 | urlopen(url, data, timeout) |
通过read()可以读取到里面的内容 (读者也可以试试不加read直接打印会输出什么)
由于我们获得的链接是图片直链,此处返会的便直接是图片的原始编码。接下来,只需保存就好啦!
1 | #以二进制保存 |
执行后,相应文件夹即会出现对应图片
有点麻烦,换个方法?
其实,如果单单保存一张图片的话,urllib为我们提供好了一个方法
我们来试一下
1 | def save_pic2(): |
运行结果和刚刚相同
urllib模块提供的urlretrieve()函数。urlretrieve()方法直接将远程数据下载到本地。
1 |
|
好啦,我们的小虫虫就下载完成了!
所以,爬虫是啥
如果让现在的我们概括这个问题,我们应该可以这样想象:
- 互联网是一张大网(它也确实很大),爬虫就是上面的一只只蜘蛛,沿着网的触须蔓延开来,在互联网上搜索的我们感兴趣的资源(比如这张图片),然后按照我们的意愿对它进行一定操作(如我们的保存)。爬取、数据处理、保存等操作便完成了一次爬取。
- 事实上,搜索引擎就是一个巨大的爬虫,它通过一定的方法遍历搜索范围内的所有节点(如你喜欢看片……片子,你可能就会走遍你附近的所有影院),并将它们按一定的索引(比如你的口味)建成一个巨大的数据库(比如记在小本本上)。然后,当用户需要搜索需求(比如你饥渴了)时,就可以按照这个索引(如你编好的小本本)用特定的方法找到对应的资源。
(实际上,网络爬虫的概念并不那么简单,感兴趣的可以阅读这里看一看)
其他
- 你可以试着用这样的方法保存其他图片,然后不出意外,有些地方的图片你一定会遇到问题。我们之后再扯
- 爬虫的应用场景很广泛,绝对不止保存图片。下一次,我们将尝试读取网页进行操作,敬请期待
- 我的水平不高,所讲之处难免有所漏洞,还望指正