每天学习一点点,成功增加一大步

NodeJS实战:借助 HTTP API 来做个 HTTP小爬虫

NodsJS zhanghui 588℃

今天是小实践了一下如何利用 nodeJS 的 HTTP API 来做个小爬虫,如果是以前做远端页面数据的抓取时均采用 PHP 语言来实现,现在既然在学习 nodeJS 所以就来尝试下吧。

首先做个简单的获取 HTML 源代码的实例吧。建立一个JS文件,然后在头部引入两个依赖的模块。

var http = require('http');
var cheerio = require('cheerio');

这里的 cheerio 模块是要通过 npm 进行安装,安装命令是:

npm install cheerio

打入命令后按回车等待安装的完成提示如下图。

cheerio 安装

然后就可进入执行过程的代码编写.

var url = 'http://blog.pkcms.cn/';
http.get(url, function(res){
    var html = '';
    // data 事件会将 HTML 代码拼接进来
    res.on('data', function(data){
        html += data;
    });
    // end 事件 将拼接好的 html 输出
    res.on('end', function(){
        console.log(html);
    });
}).on('error', function(){
    console.log('获取源码失败');
});

上面这步就可完成简单的数据抓取的工作了,但这还达不到我们想要获取源代码的目的,因为我们做这目的并不是要乱七八糟的代码,而是要具体的数据,根据这一思路所以产生了以下的代码对获取过来的数据进行分析和截取。

 function filterChapters(html) {
    var $ = cheerio.load(html);
    var actives = $('.excerpt');
    var activesData = [];
    actives.each(function(item){
        var active = $(this);
        var activeTitle = active.find('h2').children('a').text();
        var activeUrl = active.find('h2').children('a').attr('href');
        var activeData = {
            activeTitle:activeTitle,
            activeUrl:activeUrl
        }
        activesData.push(activeData);
    });
    return activesData;
}

具体的过程就不多写了,相信有一定 javascript 基础的伙伴可以自己思考如何组装了。下图是执行后正确的返回数据。

HTTP 小爬虫的抓取数据

GITHUB地址:https://github.com/366065186/nodejs-demo/tree/master/http

转载请注明:隨習筆記 » NodeJS实战:借助 HTTP API 来做个 HTTP小爬虫