Node.js简单爬虫

最近在看 Node.js的书,不得不佩服作者的创造力;遂踩着前人的脚印
及时充电,手把手教你写一个简单的爬虫;

准备好了吗 撒,一库哟

cd 到你的Coding 目录下
新建一个文件夹
接着进入这个文件夹中,安装 express
npm install express --registry=https://registry.npm.taobao.org
npm install superagent --save
npm install cheerio --save
touch app.js

superagent 和 cheerio是什么?

superagent它是一个强大并且可读性很好的轻量级ajaxAPI,
是一个关于HTTP方面的一个库,而且它可以将链式写法玩的出神入化。
可以理解成一个 Node.js 版的 jquery,
用来从网页中以 css selector 取数据,使用方式跟 jquery 一样一样的。

接下来就是在 app.js 中写代码了,准备工作已经完成,比如这里爬取的是 cNodejs(优秀的 node 社区)
var express = require('express');
var superagent = require('superagent');
var cheerio = require('cheerio');


var app = express();

app.get('/', function(req, res, next) {
 // 用 superagent 去抓取 https://cnodejs.org/ 的内容
superagent.get('https://cnodejs.org/')
  .end(function(err, sres) {
    // 常规的错误处理
    if (err) {
      return next(err);
    }
    var items = [];
    // sres.text 里面存储着网页的 html 内容,将它传给 cheerio.load,习惯性地命名为 `$`
    // 接下来就可以使用熟悉的 jquery 操作了
    var $ = cheerio.load(sres.text);
    $('#topic_list .cell').each(function(index, element) {
      var $img = $(element).find('img');
      var $topic = $(element).find('.topic_title');
      items.push({
        author: $img.attr('title'),
        title: $topic.attr('title'),
        href: $topic.attr('href')
      });
    });
    res.send(items);
  });
});

app.listen(3000, function() {
 console.log('app is listening at port 3000');
});

接着上面的终端里输入 node app.js

然后就可以在http://localhost:3000中看到抓取的数据了
如下图所示: