node爬蟲
什麼是爬蟲呢,是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。為什麼選用node呢,因為我是前端,當然要用js實現。
專案分析
爬取http://top.zhaopin.com 智聯網站上的全國的競爭最激烈三個月內前十的崗位。不需要定時爬取。使用request和cheerio模組。node版本7.6.0、npm版本4.1.2
安裝
npm install request cheerio -S
複製程式碼
request 模組是一個簡化的HTTP客戶端。 cheerio 模組專為伺服器設計的核心jQuery的快速,靈活和精益的實現。可以把爬到的內容和jQuery一樣使用。
核心程式碼
// app.js
const request = require('request');
const cheerio = require('cheerio');
// 發起請求
request('http://top.zhaopin.com', (error, response, body) => {
if(error){
console.error(error);
}
let json = {};
// 獲取到的內容放到cheerio模組
const $ = cheerio.load(body);
// jQuery 遍歷 #hotJobTop .topList li 是通過http://top.zhaopin.com 分析頁面結構得到的
$('#hotJobTop .topList li').each(function (index) {
let obj = json[index] = {};
obj.name = $(this).find('.title').text().trim();
obj.num = $(this).find('.paddingR10').text().trim();
});
// 列印資料
console.log(json);
});
複製程式碼
執行 node app.js 就會得到如下結果。
[ { name: 'Java開發工程師', num: '340538人/天' },
{ name: '軟體工程師', num: '220873人/天' },
{ name: '銷售代表', num: '175053人/天' },
{ name: '會計/會計師', num: '168225人/天' },
{ name: '行政專員/助理', num: '150913人/天' },
{ name: 'WEB前端開發', num: '140979人/天' },
{ name: '助理/祕書/文員', num: '139098人/天' },
{ name: '軟體測試', num: '136399人/天' },
{ name: '人力資源專員/助理', num: '123482人/天' },
{ name: '使用者介面(UI)設計', num: '107505人/天' } ]
複製程式碼
一個簡單的爬蟲就寫好了,看看前十有沒有你從事的崗位吧!