1. 程式人生 > >nodejs實現網站資料的爬取

nodejs實現網站資料的爬取

 1 // 引入https模組,由於我們爬取的網站採用的是https協議
 2 const https = require('https');
 3 // 引入cheerio模組,使用這個模組可以將爬取的網頁原始碼進行裝載,然後使用類似jquery的語法去操作這些元素
 4 // 在cheerio不是內建模組,需要使用包管理器下載安裝
 5 const cheerio = require('cheerio');
 6 // 這裡以爬取拉鉤網為例
 7 var url = "https://www.lagou.com/";
 8 // 使用https模組中的get方法,獲取指定url中的網頁原始碼
 9 https.get(url, function
(res) { 10 var html = ''; 11 // 每當我們從指定的url中得到資料的時候,就會觸發res的data事件,事件中的chunk是每次得到的資料,data事件會觸發多次,因為一個網頁的原始碼並不是一次性就可以下完的 12 res.on("data", function (chunk) { 13 html += chunk; 14 }); 15 // 當網頁的原始碼下載完成後, 就會觸發end事件 16 res.on("end", function () { 17 //這裡我們對下載的原始碼進行一些處理 18
doSomeThing(html); 19 20 }); 21 }); 22 function doSomeThing(html) { 23 // 使用cheerio模組裝載我們得到的頁面原始碼,返回的是一個類似於jquery中的$物件 24 var $ = cheerio.load(html); 25 //使用這個$物件就像操作jquery物件一般去操作我們獲取得到的頁面的原始碼 26 var $menu_box = $(".menu_box"); 27 // 將我們需要的文字資訊儲存在一個數組中 28 var result = [];
29 $menu_box.each(function (i, item) { 30 var obj = {}; 31 var h2 = $(item).find("h2").text().trim(); 32 obj.name = h2; 33 var $as = $(item).find("a"); 34 obj.subName = []; 35 $as.each(function (i, item) { 36 obj.subName.push($(item).text()); 37 }); 38 result.push(obj); 39 }); 40 //最後我們輸出這個結果 41 console.log(result); 42 }

 

// 引入https模組,由於我們爬取的網站採用的是https協議 const https = require( 'https'); // 引入cheerio模組,使用這個模組可以將爬取的網頁原始碼進行裝載,然後使用類似jquery的語法去操作這些元素 // 在cheerio不是內建模組,需要使用包管理器下載安裝 const cheerio = require( 'cheerio'); // 這裡以爬取拉鉤網為例 var url = "https://www.lagou.com/"; // 使用https模組中的get方法,獲取指定url中的網頁原始碼 https. get( url, function ( res) { var html = ''; // 每當我們從指定的url中得到資料的時候,就會觸發res的data事件,事件中的chunk是每次得到的資料,data事件會觸發多次,因為一個網頁的原始碼並不是一次性就可以下完的 res. on( "data", function ( chunk) { html += chunk; }); // 當網頁的原始碼下載完成後, 就會觸發end事件 res. on( "end", function () { //這裡我們對下載的原始碼進行一些處理 doSomeThing( html);
}); }); function doSomeThing( html) { // 使用cheerio模組裝載我們得到的頁面原始碼,返回的是一個類似於jquery中的$物件 var $ = cheerio. load( html); //使用這個$物件就像操作jquery物件一般去操作我們獲取得到的頁面的原始碼 var $menu_box = $( ".menu_box"); // 將我們需要的文字資訊儲存在一個數組中 var result = []; $menu_box. each( function ( i, item) { var obj = {}; var h2 = $( item). find( "h2"). text(). trim(); obj. name = h2; var $as = $( item). find( "a"); obj. subName = []; $as. each( function ( i, item) { obj. subName. push( $( item). text()); }); result. push( obj); }); //最後我們輸出這個結果 console. log( result); }