node 利用http和cheerio编写简易爬虫

首先cnpm init创建一个package.json

引入cheerio模块 cnpm install --save cheerio

然后开始编写代码

 

let cheerio = require('cheerio'),
    http = require('http'),
    fs = require('fs'),
    url = 'http://so.8264.com/cse/search?q=2&s=9963133823733045431&p=',
    page = 1



http.get(url + page, function (res) {
    let html = ''; //用来存储请求网页的整个html内容
    res.setEncoding('utf-8'); //防止中文乱码
    //监听data事件,每次取一块数据
    res.on('data', function (chunk) {
        html += chunk;
    });
    //监听end事件,如果整个网页内容的html都获取完毕,就执行回调函数
    res.on('end', function () {
        // console.log(html)
        var $ = cheerio.load(html, {
                decodeEntities: false
            }),
            Arr = []
        //采用cheerio模块解析    html
        $('.result').each(function (index, element) {
            const _t = $(this)
            Arr.push({
                'title': _t.find('.c-title').text().trim(),
                'src': _t.find('a').attr('href').trim(),
                'img': _t.find('img').length > 0 ? _t.find('img').attr('src').trim() : '',
                'describe': _t.find('.c-abstract').text().trim()
            })
        })

        let writerStream = fs.createWriteStream('output.txt');
        writerStream.write(JSON.stringify(Arr), 'UTF8');
        writerStream.end();

    });
}).on('error', function (err) {
    console.log(err);
});

 

posted @ 2018-11-08 13:20  两面一汤  阅读(465)  评论(0编辑  收藏  举报