1,要想达到日爬取千万,这种大规模的爬取,使用分布式是必须的,
关于可以使用RabbitMQ消息队列代替Redis。
关于celery的使用,
2,关于资源问题,数据去重问题,使用布隆过滤去重,几乎也是达成了共识,
3,另外就是代码健壮性要强!高可用、高扩展、高性能你可以都不知道,也没多大关系。但是这三大信仰听过就可以了
4,在存储上当我们采集的量级到达千万之后都放在一张表里面存储已经不太可能了,这个时候我们必须采用分表来存储
为什么说现在的爬虫工程师都是全能或者正在成为全能的路上呢?
因为爬虫人至少要懂一门学科以上的知识,学会爬虫只是学会了走路
http协议要知道吧?哪个协议可以帮你省带宽跟时间?
数据库?要懂吧?数据存储咋优化?数据库分布式也要知道一点吧?
算法?爬虫任务调度算也要了解吧?
分布式?redis?kafka?总要懂一点吧?不然爬虫怎么协作?毕竟大佬都在用
JS?不会这个?如何成为高阶爬虫人?反推、逆向必经之路呀!
基本的解密知识要了解吧?
验证码破解要懂吧?机器学习要懂吧?现在破解验证码都上机器学习了!
ios开发要学吧?安卓开发也要学吧?不然怎么反编译app探囊取物隐藏的接口加密算法?
所以如何实现千万级的数据采集其实跟编码关系并不大,跟咱们处理问题的能力跟设计能力关系很大,现在市面上很多网站可谓是易守难攻!你必须具备但不限于以下能力:
1、网站爬虫检测,干掉你的IP 。你知道自己被盯上了但是并不知道是哪个地方被盯上了!UA?行为?如何有效的规避?
2、某网类似的垃圾数据返回?数据里面掺点毒!如何辨别?
3、资本要求一天爬完亿级数据量,一台机器带宽有限,如何用分布式策略提高爬虫效率?
4、数据要不要清洗?如何清洗?端到端管道清洗了解吗?
5、网站数据更新情况如何识别与监测?如何设计规则?
6、海量数据,如何设计存储?
7、JS加载如何采集?
8、数据、参数加密如何破解?
9、如何应对不同的验证码?有什么更好的方法提高识别率?
10、APP应用如何采集?数据接口如何挖掘?
灵魂十问???
#####