在学习爬虫之前我们需要明白这样一个问题
爬虫能做什么?
爬虫除了能够获取互联网的数据以外还能够帮我们完成很多繁琐的手动操作,这些操作不仅仅包括获取数据,还能够添加数据,比如:
1. 投票
2. 管理多个平台的多个账户(如各个电商平台的账号)
3. 微信聊天机器人
实际的应用远不止上面这些,但是上面的应用只是除开数据本身的应用而已,数据本身的应用也是很广的:
1. 机器学习语料库
2. 垂直领域的服务(二手车估值)
3. 聚合服务(去哪儿网,美团)
4. 新闻推荐(今日头条)
5. 预测和判断(医疗领域)
所以爬虫能做的功能非常多,也就造就了爬虫的需求也是越来越旺盛,但是很多有过后端开发的人员却觉得爬虫很简单,很多人觉得爬虫用一个库(requests)去获取一个html然后解析就行了,实际上爬虫真的这么简单吗?
首先回答学习之前我们来问几个问题:
1. 如果一个网页需要登录才能访问,怎么办?
2. 对于上面的问题,很多人说模拟登录就行了,但实际上很多网站会采用各种手段去加大模拟登录的难度,如:各种验证码,登录逻辑的各种混淆和加密、参数的各种加密,这些问题都怎么解决?
3. 很多网站只能手机登录怎么办?
4. 很多网站为了用户体验和服务器优化,会将一个页面的各个元素采用异步加载或者js加载的方式完成?这些你有能力分析出来吗?
5. 作为一个网站,各种反爬的方案也是层出不穷,当你的爬虫被反爬之后,你如何去猜测对方是怎么反爬的?
6. 一个爬虫怎么发现最新的数据?如何发现一个数据是否被更新了?
如果你只是做一个简单的爬虫,比如你的爬虫就是一次性的,一次性获取某个网站的某些数据这样当然就简单了,但是你要做一个爬虫服务,你就必须要面对上面的问题,这上面还没有提到数据的提取和解析等等:
综合上述问题接下来看一下我们要学习什么:
第一阶段:基础入门
1. 计算机网络的基础,包括:tcp/ip协议、socket网络编程、http协议
2. 前端的基础:主要是javascript基础和ajax基础
3. python的基础语法
4. 数据库的基础:任何一个数据库都行,但是强烈建议学习mysql或者postgresql
5. html解析的基础:beautifulsoup的使用、xpath和css选择器
6. html下载的基础:urllib或者requests使用
7. 数据保存的基础:如果你要使用的是关于数据库(mysql)的话可以使用pymysql、接下来使用peewee,如果你需要使用的是文档数据库(mongodb)的话,可以选择pymongo,然后使用mongoengine
第二阶段:爬虫实战
经过前面的阶段,你只是具备了最基本的爬虫知识而已,想要真正的抓取爬虫你还需要更进一步的学习
1. 模拟登录:你需要知道cookie和session登录的原理、如果需要针对性的抓取微博等你还需要知道oauth2.0的具体过程
2. 动态网页分析技术: 最基本的方法是通过分析js和html等基础方法,但是很多网站会将这部分逻辑做的很复杂,所以你需要进一步学习selenium和chromedriver相关的基础
3. 验证码的识别:
这里包括最基本的验证码识别,比如ocr识别等,对于更复杂的验证码如果想要自己去识别的话你还得懂机器学习和图像识别技术,简单的方法就是调用第三方服务
4. 对于反爬,你需要懂nginx的基本配置,你需要更一步熟悉http协议的细节
5. 爬虫的开发需要配置多线程开发,所以你需要更加懂多线程的开发,这里包括了线程间通信和线程同步等基础
第三阶段:爬虫监控和运维
一个爬虫上线生产环境你得监控你的爬虫吧,监控一个爬虫你最好是用页面管理吧,所以你得懂:
1. linux基础,用于部署服务
2. docker基础,docker部署的优势和流行相信大家都懂的
3. django或者flask,因为我们需要开发页面去监控爬虫
第四阶段:爬虫框架和分布式爬虫
1. 你得懂至少一门爬虫框架scrapy或者pyspider
2. 懂了scrapy你还需要知道scrapy-redis知道如何去解决分布式爬虫的问题
3. 你得懂分布式存储的方案:hadoop的一套解决方案
4. 你得懂mongodb文档数据库
5. 你得懂elasticsearch搜索引擎
6. 你得懂kafaka这种分布式发布订阅消息系统
7. 分布式相关的基础如分布式锁等你需要知道原理
第五阶段:爬虫的应用
这个阶段就是属于应用的领域了,比如你要做人工智能,你得懂人工智能的相关知识,你如果做数据分析你得学习数据分析的基本知识,如果你是想做web服务你需要学习web开发的基础,如果你是想做搜索引擎和推荐系统你得懂相关的基础才行。
这样的一个系统学习顺序,绝对是能让你少走很多弯路,关于Python学习教程,前面的机器也有跟大家讲到,后续也会继续为大家更新!