1天4个小时学习,没有基础的话,在Python入门这一块你可能就要花2周时间才能学完且稳固,剩下的两周,你能学完并掌握初级爬虫剩下的知识吗?
技术这条道路上很忌讳急功近利。我知道你可以从头到晚看完并理解一本书就只需要几天时间,但看完了你能用起来吗?看是看完了,但看了什么记不起来了,你需要反复练习,同样的,你1个月是能跟着学完没有问题,但你能不能站得稳还是个问题。
更何况,有些机构的课程都是挑肥拣瘦。
中级爬虫的水平可以算是职业爬虫师的基本水平,除了初级爬虫的知识点之外,还应该掌握以下一些知识点:
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 池,都可以,有了池子之后,你被封的概率也会降低,你也不想爬个公众号结果WX被封了吧?
更高水平的爬虫,以下4点是必会的内容:
1.JS逆向
为什么要学JS逆向爬取? 在反爬和反反爬的对抗中,用Selenium 等方式来爬也是可以,但效率还是低了,毕竟它模拟的是网页渲染的整个过程,而真实的数据可能仅仅就藏在一个小接口里,所以JS逆向则是更高级别的爬取技术,尤其是在大型网站的数据爬取,例如某多多和某宝,如果你能用JS逆向去爬下来,无疑是技术高超的证明之一,但JS逆向也不是谁都能修炼成的,确实烧头发。
APP的逆向就更不用说,网页可以逆向,APP也能逆向,那你配得上“牛逼”二字。
2.智能化爬虫
何为智能化爬虫? 举个例子,一般情况下,写一个爬取小说网站的爬虫,要根据不同的网站编写不同的提取规则,才能提取出想要的内容。而如果使用智能化解析的话,不论是哪个网站,你只需要把网页的url传递给它,就可以通过算法智能识别出标题、内容、更新时间等信息,而不需要重复编写提取规则。
智能化爬虫简而言之就是爬虫与机器学习技术相结合,使得爬虫更加智能化,不然的话,要爬1万个网站,难道我们要写1万个爬虫脚本?
3.爬虫与运维
爬虫什么时候与运维搭上关系了?它们俩一直都有着密不可分的关系,只是你的爬虫需求或者水平没有达到,所以不会考虑到它们。
爬虫与运维的关系主要体现在部署和分发、数据的存储和监控这几个方面。
比如说如何把1个爬虫快速部署到100台主机运行起来?比如怎样监控一些爬虫的占用内存和 CPU 状况?比如爬虫如何设置报警机制来保证爬虫项目的安全?
Kubernetes 、Prometheus 、Grafana是爬虫在运维方面用的比较多的技术,在做大点的爬虫项目时我也是经常拿它们来保驾护航。
4.爬虫的巅峰
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!