基于nodejs的爬虫

主要用到这三个node模块:

express

request

cheerio

  • 其中express是服务端框架
  • request相当于前端的ajax请求
  • cheerio相当于jquery
开始
首先我们先新建一个 spider目录,进入该目录依次执行以下命令:
npm install express -g
npm install express-generator -g
npm install request --save-dev
npm install cheerio --save-dev
express
npm install             
OK 我们的项目目录变成这个样子:

前期工作完成。

 

Coding

修改app.js文件如下:

var express = require('express');
var app = express();
app.get('/', function(req, res) {
    res.send('hello express');
});

app.listen(3, function() {
    console.log('listening on 3');
});

终端执行命令:
supervisor app.js
(注:supervisor是nodejs中监控进程用的。比如我们修改了app.js 那么supervisor就会自动去重启这个文件,不需要手动去node app.js,可以通过 npm install supervisor -g 来安装。)
 
打开 127.0.0.1:3
看到页面上输出了 hello express
ok,一切正常。
 
然后我们看下request。我们去到npm 里面 request的官网
看到关于他的使用:
修改app.js如下:
var express = require('express');
var app = express();
var request = require('request');
 
app.get('/', function(req, res) {
request('http://www.cnblogs.com/luoxiaoxi/', function (error, response, body) {
    if (!error && response.statusCode == 200) {
       console.log(body);// Show the HTML for the request page.
       res.send('hello express');
     }
   });
 });
 
 app.listen(3, function() {
   console.log('listening on 3');
});
刷新页面,等一会,会看到终端打印出了html相关信息:
 
 

接着,我们用上 cheerio

 var express = require('express');
 var app = express();
 var request = require('request');
 var cheerio = require('cheerio');
 
 app.get('/', (req, res)=>{
   request('http://www.cnblogs.com/luoxiaoxi/', (error, response, body)=>{
     if (!error && response.statusCode == 200) {
        $ = cheerio.load(body); //拿到body,作为选择器
        // res.json({
        // 'result':$('#main .post h2 a').text()
        // });
        var titles = [];
        $('#main .post h2 a').each((i,elem)=>{
            //titles[i] = $(this).text();
            titles[i] = elem["children"][0]["data"];
            });
        //titles.join(',');
        res.send(titles);
        //res.send("END");
     }
   });
 });
 app.listen(3, ()=>{
   console.log('listening on 3');
 });
 
 
 
 
 
 
 
 
 
 
 
 
 

posted on 2016-04-02 20:34  罗小夕  阅读(257)  评论(0编辑  收藏  举报

导航