爬虫工程师需要具备哪些知识
一、必备部分(初级)
1、熟悉多线程编程、网络编程、HTTP协议相关
2、开发过完整爬虫项目(最好有全站爬虫经验,这个下面会说到)
3、反爬相关,cookie、ip池、验证码等等
4、熟练使用分布式
5、了解企业级爬虫和个人爬虫的差异(企业级爬虫,首先在数据量上跟我们平时学习的时候爬虫,不是同一数量级,数据量大很多。其次,企业级爬虫代码一般部署到专门的爬虫服务器上,采取7*24小时运行,所以需要日志监控,异常维护。)
爬虫基础知识:
1、请求与响应
2、爬虫与反爬虫
3、开发工具
4、urllib库使用详解与项目实战
5、requests库安装使用与项目实战
二、爬虫基础
学习爬虫,我们首先要了解什么是爬虫以及它的工作流程,知己知彼,方能百战百胜嘛。当然这些大家都知道的,废话不多说,先来看看爬虫基础知识点。
1、请求与响应
2、爬虫与反爬虫
3、开发工具
4、Urllib库使用详解与项目实战
5、requests库安装使用与项目实战
以上的知识只是入门
三、爬虫进阶
1、爬虫框架实现
2、破解反爬技术
3、代理池实现
4、模拟登陆
5、pyspider框架
四、爬虫高级部分
1、APP的抓取
2、Scrapy框架
3、分布式爬虫实战
4、分布式爬虫部署+
如何学习
了解了这么多之后,应该如何学习提升呢?
当然随便看看知乎教程什么的就不够啦,需要了解scrapy和pyspider这两个框架,scrapy_redis也是需要理解原理的。
分布式如何搭建、如何解决其中遇到内存、速度问题。
参考 scrapy-redis 和 scrapy 有什么区别?
关于反爬
常见的 UA、Refer等需要了解是什么东西,有些验证的ID如何产生的,是否必要;关于IP池这块我不了解,不多说,需要注意的是如何设计拉黑机制;模拟登陆也是必要的,fuck-login 可以研究下代码,或者提PR。
全站爬取
就拿我们常见的网站拉勾网举例,搜索关键词,有30页,不要以为把这30页爬完就是全站爬取了,你应该想方法把所有数据全部爬下来。
那我们该用什么办法,答案是通过筛选缩小范围,慢慢来就OK了。
同时,每个职位还会有推荐职位,再写一个采集推荐的爬虫。
实际项目经验
这个面试中肯定会被人问道,如:
1、你爬过哪些网站
2、日均最大采集量是多少
3、你遇到哪些棘手问题,如何解决等等
检验能力是否达标
给你一个任务,比如爬取当地政府网上的所有新闻,你会如何思考并设计这个项目?