node.js-使用cheero与superagent完成简单爬虫(4)

  09 Jun 2017


目标

新建node3项目,当在浏览器中访问 http://localhost:3000/ 时,输出中国制造网(http://cn.made-in-china.com/nmEJVvWbTxcu-gongsi-1.html) 公司页面所有的公司和地址,以 json 的形式。 例如:

[{"comanyname":"江阴南侨机械铝业有限公司","href":"http://yancui555.cn.made-in-china.com"},
 {"comanyname":"百销通高级版会员","href":"http://yancui555.cn.made-in-china.com"}]

内容

我们需要的依赖分别是 express,superagent 和 cheerio。 先介绍一下:

superagent(http://visionmedia.github.io/superagent/ ) 是个 http 方面的库,可以发起 get 或 post 请求。

cheerio(https://github.com/cheeriojs/cheerio ) 大家可以理解成一个 Node.js 版的 jquery,用来从网页中以 css selector 取数据,使用方式跟 jquery 一样一样的。

npm install name –save不再多说了。直接上代码了

var express=require('express');
var cheerio = require('cheerio');
var superagent = require('superagent');
//引入superagent-charset设置编码格式解决乱码问题。
require('superagent-charset')(superagent);

var app=new express();

app.get('/',function(req,res){

 superagent.get('http://cn.made-in-china.com/nmEJVvWbTxcu-gongsi-1.html').charset('gbk')
    .end(function(err,sres){
        if(err){
            return next(err);
        }
        var $ = cheerio.load(sres.text);
        var items = [];
        $('#inquiryForm a').each(function(i,n){
           var $n=$(n);
            items.push({
                comanyname:$n.attr('title'),
                href:$n.attr('href')

            })
        })
        res.send(items);
    })
});
 app.listen(3000,function(req,res){
     console.log("app runing at port 3000");
 })