前几天有粉丝跟我反馈说,某机构的人跟他说学爬虫1个月就能接单,让这小伙子去报名那个机构的爬虫课程,学完之后1个月就能把6000多的学费赚回来,我听了之后不禁咋舌。
秉着客观的态度,就算不信我也没有去下结论,而是去看了一下他们的课程体系,结果不出我所料,课程大部分都在讲Python入门知识(函数等)、requests和XPath等内容,这不都是一些初级爬虫的知识吗?能月赚6000?怎么不教年轻人去街上抢钱呢?
如果只是学这点东西,你可能会饿死,爬虫月赚6000的也不少,但你的技术水平得达到。
今天就给大家讲解爬虫的初、中、高、巅峰水平应该要学习哪些技术,并结合我多年来接私活的经验,告诉你学到什么程度你可以拿多少钱。
文章目录
-
- 一、初级爬虫
- 二、中级爬虫
-
-
- 1.爬取方式
- 2.爬取速度
- 3.爬APP
-
- 三、高级爬虫
-
-
- 1.企业级爬虫
- 2.应对反爬的技术
-
- 四、更高水平的爬虫(爬虫的巅峰)
-
-
- 1.JS逆向
- 2.智能化爬虫
- 3.爬虫与运维
- 4.爬虫的巅峰
-
一、初级爬虫
根据我这些年来对爬虫的了解,初级爬虫的水平大概是这个样子的:
这个水平能干什么?就是爬虫一些基本的网站,涉及一点反爬就GG。
比如说我们去爬1个某个网站的文章,这个网站没有带反爬机制,那么用 requests 等库就够了,用 XPath、BeautifulSoup、PyQuery 或者正则表达式解析一下网页的源码,再加个文本写入存下来就完事了。
其中的难度并不大,无非是几个方法调用和循环加储存,如果存储方面稍微扩展一下的话,可以对接上 MySQL、MongoDB、Elasticsearch、Kafka 等等来保存数据,实现持久化存储。以后查询或者操作会更方便。
1个月的时间也就是初级爬虫左右的水平,月赚6000是相当难的,你必须得提高自己的爬虫技术。
二、中级爬虫
中级爬虫的水平可以算是职业爬虫师的基本水平,除了初级爬虫的知识点之外,还应该掌握以下一些知识点:
1.爬取方式
当你的requests 不顶用的时候(爬下来的和网页显示的不一样),你就应该想到数据来源可能是 Ajax,你去分析网站的时候就得懂JavaScript ;如果想绕过分析 Ajax 和一些 JavaScript 逻辑的过程来爬取数据,我们就得用 Puppeteer、Pyppeteer、Selenium、Splash 等来模拟浏览器的方式来爬取。
2.爬取速度
除了爬取方式,还有爬取速度,这时候你就得有多进程、多线程、协程的知识储备了。
3.爬APP
如果你只会网页爬虫,那你还算不上中级爬虫的水平,你还得会爬APP,APP也占据着半壁江山。
这个时候你就得会Charles、Fiddler抓包了,抓到之后拿来模拟就行;如果接口被加密了,可以用 mitmproxy 直接监听接口数据或者走 Hook,比如上 Xposed 也可以拿到。
爬APP时还有一点比较重要,就是自动化爬取。如果是自己手动戳来实现爬虫的话,给再多钱也没用,这就不是个人干的活…比较好的解决方案就是adb工具和Appium ,你说该不该学?
三、高级爬虫
高级爬虫师不管是在职场还是兼职方面,都有着很大的优势,高级爬虫水平应该掌握以下几个方面的技术:
1.企业级爬虫
但凡是接触过大规模的爬虫的人都会有所体会到,多线程、多进程和协程虽然能够加快爬取速度,但说白了还是个单机的爬虫,比起更高级的分布式爬虫要逊色很多,分布式爬虫才算得上企业级爬虫。
分布式爬虫的重心就在于资源共享,那么我们很有必要去掌握的东西就是RabbitMQ、Celery、Kafka,用来这些基础的队列或者组件来实现分布式;其次就是我们大名鼎鼎的Scrapy爬虫框架,也是目前用的最多的爬虫框架,对于Scrapy的Redis、Redis-BloomFilter、Cluster 的理解和掌握是必不可少的。
掌握这些东西之后,你的爬虫才能达到企业级的高效率爬虫。
2.应对反爬的技术
高级爬虫水平应该考虑的另一个重心就是反爬。
网页反爬机制的常见操作就是验证码,什么滑块验证啊、实物勾选啊、加减法啊等等的,招式层出不穷,这个时候你就得知道如何去应付这些常见的验证码了。
还有反爬中常见的IP检测,搞不好就会封你的号,所以应对手法也是必须得有的,不管你是用免费代理还是付费代理来换代理IP,都是可以的。
以及应对反爬时的分流技术避免账号被封,分流技术就得建池子,Cookies 池、Token 池、Sign 池,都可以,有了池子之后,你被封的概率也会降低,你也不想爬个公众号结果微信被封了吧?
四、更高水平的爬虫(爬虫的巅峰)
更高水平的爬虫,以下4点是必会的内容:
1.JS逆向
为什么要学JS逆向爬取? 在反爬和反反爬的对抗中,用Selenium 等方式来爬也是可以,但效率还是低了,毕竟它模拟的是网页渲染的整个过程,而真实的数据可能仅仅就藏在一个小接口里,所以JS逆向则是更高级别的爬取技术,尤其是在大型网站的数据爬取,例如某多多和某宝,如果你能用JS逆向去爬下来,无疑是技术高超的证明之一,但JS逆向也不是谁都能修炼成的,确实烧头发。
APP的逆向就更不用说,网页可以逆向,APP也能逆向,那你配得上“牛逼”二字。
2.智能化爬虫
何为智能化爬虫? 举个例子,一般情况下,写一个爬取小说网站的爬虫,要根据不同的网站编写不同的提取规则,才能提取出想要的内容。而如果使用智能化解析的话,不论是哪个网站,你只需要把网页的url传递给它,就可以通过算法智能识别出标题、内容、更新时间等信息,而不需要重复编写提取规则。
智能化爬虫简而言之就是爬虫与机器学习技术相结合,使得爬虫更加智能化,不然的话,要爬1万个网站,难道我们要写1万个爬虫脚本?
3.爬虫与运维
爬虫什么时候与运维搭上关系了?它们俩一直都有着密不可分的关系,只是你的爬虫需求或者水平没有达到,所以不会考虑到它们。
爬虫与运维的关系主要体现在部署和分发、数据的存储和监控这几个方面。
比如说如何把1个爬虫快速部署到100台主机运行起来?比如怎样监控一些爬虫的占用内存和 CPU 状况?比如爬虫如何设置报警机制来保证爬虫项目的安全?
Kubernetes 、Prometheus 、Grafana是爬虫在运维方面用的比较多的技术,在做大点的爬虫项目时我也是经常拿它们来保驾护航。
4.爬虫的巅峰
什么是巅峰?可能永远都没有巅峰…只要一天没有拥有强者的发型(全秃),我就不敢说我看到了巅峰…
我隐约感到,爬虫做到了极致,既能干全栈,又能做数据分析,说不好还是算法大师,没准在人工智能还能有所建树,这难到就是爬虫的巅峰吗?
今日的分享就到这里,愿大家都能成为金字塔顶端的男人!
感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:
点击文末的名片可以抱走