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);
        })
    })
}

    
相關文章
相關標籤/搜索