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 }