一提起爬虫可能大家就会觉得很高大上,就会想起python.呵呵,我们今天偏偏就要颠覆大家的认知,用node不到100行代码擼一个简单的爬虫。
准备
1.node环境
2.egg.js(可以不用框架,自己搭建http请求模块)
3.cherrio模块(用于解析DOM)
正文
那么下面事不宜迟,马上开始正文内容:
1.node环境
关于这点,我们就此处省略几百字.........一不小心就说出了心里话,本着手把手教学的教学理念,我在这里还是简单说一下吧。1.首先我们要下载一个node环境( 下载网址:https://nodejs.org/en/download/ ) 2. 然后这里推荐还是先也安装好cnpm淘宝镜像。因为本文用到了egg.js框架,用cnpm安装依赖会比较便捷。(直接在cmd上执行npm install cnpm -g --registry=https://registry.npm.taobao.org)
*By the way 可以在cmd中输入 npm -v 检测当前的npm版本,如果版本太低了可以通过 npm install npm -g 指令更新当前的npm版本。
2.egg.js
如何搭建egg.js的开发环境,相信没有什么比官方文档更权威吧。官方文档时中文的,很容易看懂。
在搭建好开发环境之后终于可以安心写代码了,真是搭建一小时,编写10分钟啊。初始化项目之后其实可以发现我们这次项目用到的就只有controller和service.在本次的项目我就把数据的爬取写在了service层,而controller层我就主要用于接收客户端的请求。
Controller层代码如下:
Service层代码如下:
在这里我是采用boss直聘作为例子的。url的格式很容易就能够发现,我们的请求是直接通过egg.js封装好的请求方式进行网络请求的。在这里我特别提醒下,记得将header的dataType设置为'text'不然的话我们将会获取到buffer数据。
3.Cherrio
终于来到了今天的最后也是最重要的一个模块了--就是cherrio.如果学习过jquery的同学学习这个工具不会很难,应为它们的语法是极其相似的。可以说Cherrio就是node的jquery.
我们用node爬到数据后,就要对爬到的html代码进行解读,读取出我们需要使用的数据。然后通过cherrio将数据拿到,最后返回controller即可。