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

Posted lmyt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
});

 

以上是关于node 利用http和cheerio编写简易爬虫的主要内容,如果未能解决你的问题,请参考以下文章

node爬虫的几种简易实现方式

node.js 使用 superagent 与 cheerio 完成简单爬虫

node小爬虫

http爬虫简易版

[js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息

从零系列--node爬虫利用进程池写数据