一、爬虫的定义
网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
二、爬虫可以解决的问题
- 解决冷启动问题
- 搜索引擎的根基。 —通用爬虫
- 帮助机器学习建立知识图谱
- 制作各种比价软件
三、爬虫工程师的进阶之路
初级爬虫工程师
-
web前端的知识
HTML、CSS、Javascript、DOM、DHTML、Ajax、jQuery、json等
-
正则表达式
能提取正常一般网页中想要的信息,比如:某些特殊的文字,链接信息,知道什么是懒惰,什么是贪婪型的正则;
-
会使用 XPath 等获取一些 DOM 结构中的节点信息;
-
知道什么是深度优先,广度优先的抓取算法,以及实践中的使用规则;
-
能分析简单网站的结构,会使用 urllib 或 requests 库进行简单的数据抓取。
中级爬虫工程师
- 了解什么是 HASH ,会简单地使用 MD5,SHA1 等算法对数据进行 HASH 一遍存储
- 熟悉 HTTP,HTTPS 协议的基础知识,了解 GET,POST 方法,了解 HTTP 头中的信息,包括返回状态码,编码, user-agent , cookie ,sesssion 等
- 能设置 user-agent 进行数据爬取,设置代理等
- 知道什么是 Request,什么是 response,会使用 Fiddler 等工具抓取即分析简单地网络数据包;对于动态爬虫,要学会分析 ajax 请求,模拟制造 post 数据包请求,抓取客户端 session等信息,对于一些简单的网站,能够通过模拟数据包进行自动登录。
- 对于一些难搞定的网站学会使用 phantomjs + selenium 抓取一些动态网页信息
- 并发下载,通过并行下载加速数据爬取;多线程的使用