node-cheerio插件實現網頁爬蟲


本文將介紹node使用cheerio插件,使jquery可以在服務端解析結構,實現精准查詢並爬取數據

一、導入相關依賴

需要安裝cheerio插件,使用npm i cheerio -S指令安裝

const cheerio = require('cheerio');
//根據請求網址的協議來決定引入http還是https模塊
const http = require('http');
const fs = require('fs');

二、使用get請求或post請求網址

var url = '你想要爬取的網址';
http.get(url, (res) => {
    let rawData = '';**
    //監聽數據      
    res.on('data', (chunk) => {
        rawData += chunk;
    });**
     //結束標識
    **res.on('end', () => {
        try {
            //調用cheerio封裝的函數
            getData(rawData);
     **   } catch (e) {**
            **console.error(e.message)**;
        }
    });
}).on('error', (e) => {
    console.error(`出現錯誤: ${e.message}`);
});

三、封裝cheerio解析插件

function getData(data) {**
    const $ = cheerio.load(data);
    var aBox = $('.jiangshi li');
    var arr = [];**
    aBox.each((index, item) => {
        var img = $(item).find('img').attr('src');
        **var name = $(item).find('h6').text();
        var txt = $(item).find('.jieshao').text().trim();
        arr.push({
            img,
            name,
            txt
        })
    })
    console.log(arr);
}  

四、附上完整代碼

const cheerio = require('cheerio');
const http = require('http');
const fs = require('fs');

var url = '你想要爬取的位置';**
http.get(url, (res) => {
    let rawData = '';
    res.on('data', (chunk) => {**
        rawData += chunk;
    });
    res.on('end', () => {**
        try {
            getData(rawData);
       ** } catch (e) {
            console.error(e.message);
        }
    });
}).on('error', (e) => {**
    console.error(`出現錯誤: ${e.message}`);**
});


function getData(data) {
     //將獲取到的html結構賦值給$
    const $ = cheerio.load(data);**
    **var aBox = $('.jiangshi li');**
    var arr = [];
    aBox.each((index, item) => {**
        var img = $(item).find('img').attr('src');
        **var name = $(item).find('h6').text();
        **var txt = $(item).find('.jieshao').text().trim();
        arr.push({**
            img,
            name,
            txt
        })
    })
    console.log(arr);
}                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM