最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

NodeJs實(shí)現(xiàn)簡單的爬蟲功能案例分析

 更新時間:2018年12月05日 08:29:17   作者:Adver  
爬蟲,是一種按照一定的規(guī)則,自動地抓取網(wǎng)頁信息的程序或者腳本。這篇文章通過一個案例給大家分享NodeJs實(shí)現(xiàn)簡單的爬蟲功能,感興趣的朋友一起看看吧

1.爬蟲:爬蟲,是一種按照一定的規(guī)則,自動地抓取網(wǎng)頁信息的程序或者腳本;利用NodeJS實(shí)現(xiàn)一個簡單的爬蟲案例,爬取Boss直聘網(wǎng)站的web前端相關(guān)的招聘信息,以廣州地區(qū)為例;

2.腳本所用到的nodejs模塊

express     用來搭建一個服務(wù),將結(jié)果渲染到頁面

    swig          模板引擎

    cheerio      用來抓取頁面的數(shù)據(jù)

    requests    用來發(fā)送請求數(shù)據(jù)(具體可查:https://www.npmjs.com/package/requests)

    async        用來處理異步操作,解決請求嵌套的問題,腳本中只使用了async.whilst(test,iteratee,callback),具體可見:https://caolan.github.io/async/

3.實(shí)現(xiàn)流程:

   首先先獲取到所爬取頁面的URL,打開boss直聘網(wǎng)站,搜索web前端既可以獲取到 https://www.zhipin.com/c101280100-p100901/?page=1&ka=page-next

   然后通過Chrome瀏覽器打開F12,獲取到信息中多對應(yīng)的dom節(jié)點(diǎn),即可知道想要獲取信息;

   4.代碼實(shí)現(xiàn)

      目錄結(jié)構(gòu):

      app.js

var cheerio = require('cheerio');
var requests = require('requests');
var async = require('async');
var express = require('express');
var swig = require('swig');
var app = express();
swig.setDefaults({cache:false});
app.set('views','./views/');
app.set('view engine','html');
app.engine('html',swig.renderFile);
app.get('/',function(req,res,next){
 var page = 1; //當(dāng)前頁數(shù)
 var list = []; //保存記錄
 async.whilst(
  function(){
   return page < 11;
  },
  function(callback){
   requests(`https://www.zhipin.com/c101280100-p100901/?page=${page}&ka=page-next`)
   .on('data',function(chunk){
   var $ = cheerio.load(chunk.toString());
   $('.job-primary').each(function(){
    var company = $(this).find('.info-company .company-text .name').text();
    var job_title = $(this).find('.info-primary .name .job-title').text();
    var salary = $(this).find('.info-primary .name .red').text();
    var description = $(this).find('.info-company .company-text p').text();
    var area = $(this).find('.info-primary p').text();
    var item = {
     company:company,
     job_title:job_title,
     salary:salary,
     description:description,
     area:area
    };
    list.push(item);
   });
   page++;
   callback();
   }).on('end',function(err){
     if(err){
      console.log(err);
     }
     if(page==10){
     res.render('index',{
      lists:list
     });
    }
   });
  },
  function(err){
   console.log(err);
  }
 );
});

//監(jiān)聽
app.listen(8080);

 view/index.html頁面

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<style>
 table{
  width:1300px;
  border:1px solid #ccc;
  border-collapse: collapse;
  text-align: center;
  margin:0 auto;
 }
 td,tr,th{
  border:1px solid #ccc;
  border-collapse: collapse;
 }
 tr{
  height:30px;
  line-height: 30px;
 }
</style>
<body>
 <table>
  <thead>
   <tr>
    <th>公司名稱</th>
    <th>公司地址</th>
    <th>薪資</th>
    <th>公司描述</th>
    <th>崗位名稱</th>
   </tr>
  </thead>
  <tbody>
   {% for list in lists %}
    <tr>
     <td>{{list.company}}</td>
     <td>{{list.area}}</td>
     <td>{{list.salary}}</td>
     <td>{{list.description}}</td>
     <td>{{list.job_title}}</td>
    </tr>
   {% endfor %}
  </tbody>
 </table>
</body>
</html>

5.啟動

  直接通過 node app.js啟動即可;

6.運(yùn)行結(jié)果(http://localhost:8080),只截取部分?jǐn)?shù)據(jù)

總結(jié)

以上所述是小編給大家介紹的NodeJs實(shí)現(xiàn)簡單的爬蟲功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用nvm管理(切換)node版本詳細(xì)圖文教程

    使用nvm管理(切換)node版本詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于使用nvm管理(切換)node版本的相關(guān)資料,nvm是node.js的版本管理器,可以安裝和切換不同版本node.js,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Nodejs Stream 數(shù)據(jù)流使用手冊

    Nodejs Stream 數(shù)據(jù)流使用手冊

    這篇文章主要介紹了Nodejs Stream 數(shù)據(jù)流使用手冊的相關(guān)資料,感興趣的小伙伴一起學(xué)習(xí)吧
    2016-04-04
  • Nodejs讓異步變成同步的方法

    Nodejs讓異步變成同步的方法

    今天小編就為大家分享一篇關(guān)于Nodejs讓異步變成同步的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Node.js應(yīng)用設(shè)置安全的沙箱環(huán)境

    Node.js應(yīng)用設(shè)置安全的沙箱環(huán)境

    這篇文章主要介紹了Node.js應(yīng)用設(shè)置安全的沙箱環(huán)境的方法以及注意事項(xiàng),對此有需要的朋友可以參考學(xué)習(xí)下。
    2018-04-04
  • node.js中的http.response.addTrailers方法使用說明

    node.js中的http.response.addTrailers方法使用說明

    這篇文章主要介紹了node.js中的http.response.addTrailers方法使用說明,本文介紹了http.response.addTrailers的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Windows下安裝 node 的版本控制工具 nvm

    Windows下安裝 node 的版本控制工具 nvm

    這篇文章主要介紹了Windows下安裝 node 的版本控制工具 nvm的相關(guān)資料,需要的朋友可以參考下
    2020-02-02
  • 關(guān)于npm?i幾種常見命令的區(qū)別詳解

    關(guān)于npm?i幾種常見命令的區(qū)別詳解

    npm(Node.js Package Manager)是一個Node.js的包管理工具,用來解決Node.js代碼部署問題,下面這篇文章主要給大家介紹了關(guān)于npm?i幾種常見命令的那點(diǎn)事,需要的朋友可以參考下
    2023-03-03
  • node.js對應(yīng)npm安裝和使用方法教程

    node.js對應(yīng)npm安裝和使用方法教程

    這篇文章主要給大家介紹了關(guān)于node.js對應(yīng)npm安裝和使用方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用node.js具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • Nest.js使用multer實(shí)現(xiàn)文件上傳功能

    Nest.js使用multer實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了Nest.js鵝湖使用multer實(shí)現(xiàn)文件上傳功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • 利用nodejs監(jiān)控文件變化并使用sftp上傳到服務(wù)器

    利用nodejs監(jiān)控文件變化并使用sftp上傳到服務(wù)器

    這篇文章主要介紹了利用nodejs監(jiān)控文件變化并使用sftp上傳到服務(wù)器的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02

最新評論

黄大仙区| 陈巴尔虎旗| 铜川市| 卓尼县| 石泉县| 安化县| 唐山市| 沁阳市| 泽普县| 凉城县| 钟山县| 肃宁县| 无锡市| 南阳市| 原阳县| 若尔盖县| 托克托县| 达日县| 桦甸市| 渑池县| 儋州市| 贵州省| 兰考县| 新蔡县| 固始县| 额尔古纳市| 汉阴县| 南漳县| 漯河市| 扎赉特旗| 平阳县| 恭城| 融水| 县级市| 弥勒县| 海南省| 蓬溪县| 安岳县| 桂平市| 德州市| 辽源市|