node.js來爬取智聯全國的競爭最激烈的前十崗位

jilei786發表於2018-05-15

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人/天' } ]
複製程式碼

一個簡單的爬蟲就寫好了,看看前十有沒有你從事的崗位吧!

我的部落格和github地址

blog.langpz.com

github.com/lanpangzhi

參考

github.com/request/req…

github.com/cheeriojs/c…

相關文章