在爬100万数据的时候,我发现了爬虫的进阶之路

文章首发于慕课网手记,更多内容请访问个人站点:https://www.donlex.cn

学习最好还是要以需求为驱动才能够快速成长。这是我最近一段时间的体会,其实也是我最近在写爬虫的思考。通过需求,让你处于紧迫的状态,不断学习新的知识,去满足这样那样的需求。这个时候,你会处于一种高度集中的状态,你的学习能力也是最强的时候。

之前的爬虫文章使用的都是一些基础 Python 的知识,特别是在做一些小的项目的时候,运用好那些基础知识就完全够用了。所以如果没有用到新的知识或没有接触到新的知识的时候,我就没有写出来,这就是这么长时间没有写爬虫文章的原因。并且,我感觉我的爬虫技术一直都处在初级阶段,原地踏步,没有一点进步,也就造成了“没话可说”的尴尬地步。

起因

前几周帮别人写了一份爬虫,逻辑不难,步骤也不繁琐,只要简单的几步就可以,但是数据量是我目前接触的最多的一次,将近 100万 的数据量。

就算这条虫子不慌,它爹心里也慌呀!要是中途出现什么情况,没有做好断点续爬的准备的话,那岂不是得从头再来?

还有就是,这么多的数据,在一台机子上爬,效率明显是很慢的,如果学会一点集群和分布式爬虫,使用上,那每一台机子的压力就会小很多。

还有一点能够提高效率的方法就是通过使用进程、线程。这些我也还不是很懂,因为这次的项目需要 Selenium 才能通过验证,所以我也就没有使用,不然肯定也会学一下,不知道 Selenium 中有没有多进程,线程这种东西?

selenium.jpg

再有就是 爬虫的监控异常情况的通知 。爬虫的监控我没有接触过,不过异常情况的通知,我倒是想着通过邮件提醒,虽然简单,但是却也能够达到目的,所以我在做这个项目的时候,使用了一下,感觉还可以,后面可能会详细的写一写。

说爬虫怎么能不说反爬呢?说一下我这次遇到的反爬机制。它的反爬主要是在你登陆的时候,就已经干掉了大部分想要爬取它信息的人了。(因为不能透露太多的信息,所以就用淘宝来举个例子吧,个人感觉难度跟淘宝也是差不多的。)

为什么这么说呢?你可以去试一下淘宝的登陆,看是有多么的难。相信爬过淘宝的都知道,淘宝的ua参数,是经过了算法将一大堆因素组合起来的,想要破解,可能要琢磨到脑壳疼吧。。。

所以只能通过使用 Selenium 进行模拟登陆。但我可以很绝对地告诉你,淘宝能够识别你使用了自动化工具,你的滑块验证码无论怎么刷新,永远都是错误状态,永远不会成功。就像下图一样

Selenium模拟淘宝登录.PNG

我试着使用了网上一种声称能够突破的办法: 使用代理。果然,理想很美满,现实很骨感。滑块验证码是通过了,但是逃不过异地登陆短信验证这一关。

如果想要体验一下我当时的绝望感,可以自己尝试着去搞一下淘宝的数据看下,看一下你能不能成功 “突破上分”

最后

当然,BB了这么一大堆,还是要给一点干货的。那就给个我个人认为 爬虫进阶的方向 吧!

  1. 过硬的反“反爬”能力
  2. 进程与线程
  3. 断点续爬
  4. 分布式
  5. 爬虫监控
  6. 异常通知

这次爬虫,我有一种打通了任督二脉的感觉,这种感觉就好像,那些打王者荣耀厉害的人说的 意识一样 :什么时候该反野,什么时候该团一样。不知道这样讲能不能体会到我醍醐灌顶的那种感觉?

还有一点体会,就是把事情往难了想和往量多了想,你就能找到当下自己所察觉不到的漏洞。当然,往难里想也是需要一定的基础的;但是往量多的方面想,这就没有任何难度了,在脑海中模拟,总能挑出一点瑕疵了吧?

以前听过下面这句话,没有什么深刻的体会;现在,算是真正的理解了。

再大的困难除以13亿,都会变得很渺小!再小的力量乘以13亿,就会变成爱的海洋。

你可能感兴趣的:(在爬100万数据的时候,我发现了爬虫的进阶之路)