1、开始
在过去的很长一段时间里,经常有小伙伴加我微信或者在群里发一个截图,然后问,为什么我按照XXX的代码运行没有结果啊?
没有结果肯定是不正常的结果,面对不正常结果首先要分析问题,要分析问题,首先当然要解剖问题和定位问题。
然而很多小伙伴刚刚接触数据采集写爬虫,用上几个库和框架就开干,顺利则好,不顺利,就一脸懵逼了。
这和你第一次开汽车,踩上油门汽车确实就能走,要是一条直路到达目的地,相安无事。
要是快撞树了不知道减速、不知道刹车、不知道转弯,撞树了还不知道倒车,有什么区别?
下面,通过比喻的手法,简单介绍一下,一个爬虫完成一次数据采集任务,所走过的路,所干过得事。
2、探路(分析目标)
我是一只爬虫,我即将前往我的目的地——花果山果园搬水果。
在出发之前,我派出了我的探子前往目的地了解果园的具体情况。(分析网页)
前往果园的道路是否通畅(请求是否可达)
果园有没有门卫(是否可以直接访问)
进去是否需要查验证件(是否需要认证)
果子还在树上(HTML数据)
还是已经装进了水果篮中(JSON/XML数据)……
待探子探明情况,我就可以上路了。
3、上路(HTTP请求)
前往果园我有很多种交通工具可选,比如一辆小单车(Selenium)、一辆小摩托(urllib)、一辆汽车(requests),或者是先乘高铁然后再租车(使用多种请求方式)。
我还能叫上我的几个兄弟(并发),一起去搬水果,这样可以搬得多搬得快。
正常情况下,我开了一辆小汽车驶上了高速公路。如果没有特殊情况,我可能顺顺利利全程高速,然后出了收费站,就到花果山。
但是有可能,想着果园满满的水果,我就兴奋,嗨了起来,油门自然给得也足。(请求速度快且频繁)花果山下道路限速40km/h,而我直接开了120km/h,被花果山交警大队的交警抓了,直接吊销驾照(IP被封)……game over
4、进果园(获取响应)
有惊无险下地进入了花果山果园镇。花果山里有些果园是公益开放的免费果园,所以我就直接开车进去。
有些果园是需要实名登记,我就老老实实去登记了,拿了个“已登记”的牌牌然后再进去。(登录认证后cookie)
有些果园虽然免费进入,但是特别变态,竟然只让外A牌的小车进入(限制部分地区IP访问),无奈,只得换上准备好的外A套牌(代理IP),再次进入。
进入果园后,果园的负责人为我们送上了一个大礼包(HTTP响应),大礼包是什么呢?肯定是水果啊。拿到这个水果大礼包之后,我们此行最重要的目的就完成了。接下来,把水果大礼包放到车子,班师回朝!
5、摘果子(解析响应)
有些果园只管种树,送的水果大礼包里面是连枝带叶一起塞进来的(返回的HTTP响应是HTML源码),想要果子,还得自己去摘。
准备好剪刀、手套、塑料袋,一个一个,果子剪摘下来(HTML解析)。要是你手艺不好,可能一枝也没有一个果子,也可能把果子剪坏了。
有些果园就比较厚道了,把已成熟的果子采摘下来,放在一个个准备好的塑料箱里,最后打包到水果大礼包里面(返回JSON数据)。有需要哪种水果的,直接取对应的塑料箱就行了。真是中国好果园!
更有些果园,水果摆在不远处,但是面前一条弯弯的河(反爬机制),只要你过得去,水果大礼包就是你的了。
6、处理果子(数据存储)
果子分拣出来之后,怎么办呢?有些小伙伴把水果整整齐齐码在一起,拍个照发到朋友圈就完了,水果也直接扔了(直接print)。
当然,我们运回来的水果是有目的的。可能会稍微处理一下,直接拿到市场上去售卖。有可能挑出一些水果来把皮削了,用来做水果罐头(数据清洗)。
少量的水果,我们可以直接放在小冰箱的冷藏室里面保存(文本存储),大量的水果会放入保鲜库中进行保鲜,有一些水果则会脱水烘干后进行仓库(数据库存储)。
7、最后
我是一只爬虫,水果入库之后,我又该上路了,你呢?
小编最近整理了一套Python学习教程,有需要的小伙伴,记得来小编的交流群:556370268,即可免费领取一套Python学习教程哦