node-cheerio外掛實現爬蟲
阿新 • • 發佈:2020-07-14
本文將介紹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); }