node.js 爬虫

// 导入http模块 用来请求(爬取)http请求
var http = require('http');
// 导入https模块 用来请求(爬取)https请求
var https = require('https');
// 导入fs模块 用来存取文件或操作文件
var fs = require('fs');
// 导入 cheerio 模块 用来操作node版的jq
var cheerio = require('cheerio');

// 导入 url 网址 
var url = 'http://2017.miaov.com/bbs';

//调用函数
fetchRequest(url); 
//爬取函数
function fetchRequest(url){
    var html='';

    //采用http模块向服务器发起一次get请求
    http.get(url,function(res){
        
        var titles = [];

        //防止中文乱码
        res.setEncoding('utf-8');

        //监听data事件,每次取一块数据
        res.on('data',function(chunk){
            html += chunk;
        });

        //监听end事件,如果整个网页内容的html都获取完毕,就执行回调函数
        res.on('end',function(){

            //采用cheerio模块解析html
            var $ = cheerio.load(html);

            //用来存储内容的
            var news_item = [];

            $('.listMain').each(function(index,item){

                var title = $(this).find('.postTitle').text();
                var url = '2017.miaov.com' + $(this).find('a').attr('href');
                datatitle = title + '\n'+ url + '\r\n';
                news_item.push({
                    title:title,
                    url:url
                })
                //向文件写入内容
                fs.appendFile('./data/' + 'pachong.txt', datatitle, 'utf-8', function (err) {
                    if (err) {
                        console.log(err);
                    }
                });
            });
            
            //待处理爬取后的内容
            console.log(news_item);
        })
    })
}

    

 

posted on 2017-10-25 13:29  vsmart  阅读(146)  评论(0编辑  收藏  举报