天哪,第一次表白竟要献给一个虫子和一条蝰蛇。
一只爬虫的起源
在写第一个爬虫之前先是发生了这么一件事,一个关于女神的故事。
在上个学期为考试而复习的那段时间里,天天早出晚归奔向图书馆,去得次数多了,便总能看到一个很特别的女生,慢慢地,被她的气质所吸引,她便成为了我的第一个女神(现在还是),一直到上学期结束,几乎每天都能看到她,然而我却因为太内向而没有抓住机会认识她,这个学期开学到现在,已经很少在图书馆看到她了,直到有一次,也只是看到她是从哪一层楼下来(我还是没有把握住机会,哭...),出于想要更多地了解她,但是她叫什么名字,在哪个班我都一无所知,好奇心总是能使人脑洞大开,于是用python写下了人生中的第一个爬虫,爬下了那一层楼以上的教室所在上课的同学(学校课表信息公开),然后再用这个学号信息去学校教务系统获取到这些同学的照片,经过比对,终于得到了女神的名字,班级,以及借阅信息。
嗯...不错,女神喜欢的书我也喜欢。
初识爬虫小分队
该不该搁下重重的壳
寻找到底哪里有蓝天
在经过上面的这样一件事后,一直喊了很久的口号——把python变成日常娱乐项,终于是要落地了,也真得很幸运遇见了爬虫小分队,特别感谢的有@liang, @程老哥,@攀攀老哥,@彭老师,每次和他们请教都特别有收获,并且在这一段时间的学习里也能够切实地感觉到自己的进步。
原来我的爬虫脚本是这样的:
最简单的单线程,只会用beautifulsoup
,不会反ban策略,当时爬1000个数据便要差不多一个小时,也没有了解过数据库.
现在的脚本是这样的:
虽然速度也没有快多少,但是较之前还是挺满足的。
这个是在python上的进步,在心态上也有一些改变,正如前面的歌词所说,该不该搁下重重的壳去寻找蓝天?种一棵树最好的时间是在十年前,其次就是现在,我们很多时候都是在背负着重重的壳前进,或者干脆不动,背负着来自外界环境的看法,背负着对自己的怀疑,背负着子乌虚有的假设。在追女神(还没行动...)时总是等机会流失后才后悔留下遗憾,在Python路上在怀疑一个会计学编程的必要性。但是当真正做起来,会发现和自己所想象的还是不一样的,比如在小分队的一个月中自己竟然参加了一个计算机系组织的比赛,自己竟然能够站在舞台上面对一大群的计算机系的同学讲解自己的数据分析PPT然后还拿了个三等奖,这是内向的自己从来没有想过的。在学习爬虫的过程中,也让自己的一些思维方式有了改变,比如xpath解析法,面向对象的思想,逻辑化程序化的思想,都是特别实用的。总之,还没向女神表白,就先和这一只虫子和一条蝰蛇表白下吧。python,我愿意献出我生命中的一部分的美好时光与你共同进化,陪伴便是最长久的告白。
一只可进化的爬虫
我要一步一步往上爬
在最高点乘着叶片往前飞
一个起点,一个终点...或美好,或残酷,待观众一一点评
唯有过程,自己心自知,感至深。
一只可进化的爬虫经历了那些过程呢?
可进化的爬虫1.0
一只爬虫,需要能爬现在看得到的东西,也要能爬下一步能看得到的东西
异步加载,在爬虫小分队的第一课,在这一课中,也是写爬虫的第一步,就是分析URL是如何构成的
可进化的爬虫1.5
让解析更多样,在这课中,学习了xpath
的基本用法,之前只是会Beautifulsoup
的使用,对于xpath
的原理也是不理解,事实证明,掌握多种解析方法,可以更加快速有效地提取出自己想要的信息
可进化的爬虫2.0
让爬虫快一点,爬虫小分队第三课,初步学习scrapy
框架的用法,为什么要用框架?一方面是快一点,另一方面是使爬虫更有逻辑与结构。
可进化的爬虫3.0
返回的数据有点不一样哦,第四课学习了json的解析,json的解析也是爬虫很常用的,特别是Ajax
越来越广泛的运用,返回的数据很多都是json格式的。
可进化的爬虫4.0
可进化的爬虫4.5
让爬虫飞起来,一只好的爬虫要能够翻过高山跨过海,在这一课中,学习了一些常见的反Ban的方法,经过测试,代理ip的方法不太好用,原因是代理ip太容易失效了。还有一些方法是后面才知道的,没有及时添加,有tor IP代理,cookies池。
可进化的爬虫5.0
让爬虫长一点,汗...实在想不到一个描述词,这一课学习了将数据存到数据库中,一开始写的爬虫爬取的数据是存在excel中,后来因为当数据太多的时候,查找速度太慢了,所以改用了mysql,最近试了下mongodb,一个是sql,另一个是nosql。
可进化的爬虫6.0
爬虫影分身,第八课的学习,多线程异步爬虫,用了多线程,爬虫的速度提升了很多,前面的成果图片便是开了40个线程,生成5个数据表。
可进化的爬虫7.0
爬虫公司,分布式爬虫,这一课先做个预告,未完待续,一个爬虫Boss,带领许多爬虫员工,想想就很美好。