内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

基于node.js如何制作簡單爬蟲-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“基于node.js如何制作簡單爬蟲”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“基于node.js如何制作簡單爬蟲”這篇文章吧。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括銅仁網(wǎng)站建設(shè)、銅仁網(wǎng)站制作、銅仁網(wǎng)頁制作以及銅仁網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,銅仁網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到銅仁省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

目標(biāo):爬取 http://tweixin.yueyishujia.com/webapp/build/html/ 網(wǎng)站的所有門店發(fā)型師的基本信息。

思路:訪問上述網(wǎng)站,通過chrome瀏覽器的network對(duì)網(wǎng)頁內(nèi)容分析,找到獲取各個(gè)門店發(fā)型師的接口,對(duì)參數(shù)及返回?cái)?shù)據(jù)進(jìn)行分析,遍歷所有門店的所有發(fā)型師,直到遍歷完畢,同事將信息存儲(chǔ)到本地。

步驟一:安裝node.js

下載并安裝node,此步驟比較簡單就不詳細(xì)解釋了,有問題的可以直接問一下度娘。

步驟二:建立工程

1)打開dos命令條,cd進(jìn)入想要?jiǎng)?chuàng)建項(xiàng)目的路徑(我將此項(xiàng)目直接放在了E盤,以下皆以此路徑為例);

2)mkdir node (創(chuàng)建一個(gè)文件夾用來存放項(xiàng)目,我這里取名為node);

3)cd 進(jìn)入名為node的文件夾,并執(zhí)行npm init初始化工程(期間會(huì)讓填寫一些信息,我是直接回車的);

步驟三:創(chuàng)建爬取到的數(shù)據(jù)存放的文件夾

1)創(chuàng)建data文件夾用來存放發(fā)型師基本信息;

2)創(chuàng)建image文件夾用來存儲(chǔ)發(fā)型師頭像圖片;

此時(shí)工程下文件如下: 

基于node.js如何制作簡單爬蟲

步驟四:安裝第三方依賴包(fs是內(nèi)置模塊,不需要單獨(dú)安裝)

1)npm install cheerio –save

2)npm install superagent –save

3)npm install async –save

4)npm install request –save

分別簡單解釋一下上面安裝的依賴包:

cheerio:是nodejs的抓取頁面模塊,為服務(wù)器特別定制的,快速、靈活、實(shí)施的jQuery核心實(shí)現(xiàn),則能夠?qū)φ?qǐng)求結(jié)果進(jìn)行解析,解析方式和jQuery的解析方式幾乎完全相同;

superagent:能夠?qū)崿F(xiàn)主動(dòng)發(fā)起get/post/delete等請(qǐng)求;

async:async模塊是為了解決嵌套金字塔,和異步流程控制而生,由于nodejs是異步編程模型,有一些在同步編程中很容易做到的事情,現(xiàn)在卻變得很麻煩。Async的流程控制就是為了簡化這些操作;

request:有了這個(gè)模塊,http請(qǐng)求變的超簡單,Request使用簡單,同時(shí)支持https和重定向;

步驟五:編寫爬蟲程序代碼

打開hz.js,編寫代碼:

var superagent = require('superagent'); 
var cheerio = require('cheerio');
var async = require('async');
var fs = require('fs');
var request = require('request');
var page=1; //獲取發(fā)型師處有分頁功能,所以用該變量控制分頁
var num = 0;//爬取到的信息總條數(shù)
var storeid = 1;//門店ID
console.log('爬蟲程序開始運(yùn)行......');

function fetchPage(x) {   //封裝函數(shù)
  startRequest(x); 
}
function startRequest(x) {

  superagent
    .post('http://tweixin.yueyishujia.com/v2/store/designer.json')
    .send({ 
      // 請(qǐng)求的表單信息Form data
      page : x, 
      storeid : storeid
    })
      // Http請(qǐng)求的Header信息
    .set('Accept', 'application/json, text/javascript, */*; q=0.01')
    .set('Content-Type','application/x-www-form-urlencoded; charset=UTF-8')
    .end(function(err, res){     
      // 請(qǐng)求返回后的處理
      // 將response中返回的結(jié)果轉(zhuǎn)換成JSON對(duì)象
      if(err){
        console.log(err);
      }else{
        var designJson = JSON.parse(res.text);
        var deslist = designJson.data.designerlist;
        if(deslist.length > 0){
          num += deslist.length;
          // 并發(fā)遍歷deslist對(duì)象
          async.mapLimit(deslist, 5, 
            function (hair, callback) {
            // 對(duì)每個(gè)對(duì)象的處理邏輯
               console.log('...正在抓取數(shù)據(jù)ID:'+hair.id+'----發(fā)型師:'+hair.name);
               saveImg(hair,callback);
            }, 
            function (err, result) {
              console.log('...累計(jì)抓取的信息數(shù)→→' + num);
            }
          );
          page++;
          fetchPage(page);
        }else{
          if(page == 1){
            console.log('...爬蟲程序運(yùn)行結(jié)束~~~~~~~');
            console.log('...本次共爬取數(shù)據(jù)'+num+'條...');
            return;
          }
          storeid += 1;
          page = 1;
          fetchPage(page);
        }
      }
    });
} 
fetchPage(page);
function saveImg(hair,callback){
  // 存儲(chǔ)圖片
  var img_filename = hair.store.name+'-'+hair.name + '.png';

  var img_src = 'http://photo.yueyishujia.com:8112' + hair.avatar; //獲取圖片的url

  //采用request模塊,向服務(wù)器發(fā)起一次請(qǐng)求,獲取圖片資源
  request.head(img_src,function(err,res,body){
    if(err){
      console.log(err);
    }else{
        request(img_src).pipe(fs.createWriteStream('./image/' + img_filename));   //通過流的方式,把圖片寫到本地/image目錄下,并用發(fā)型師的姓名和所屬門店作為圖片的名稱。
        console.log('...存儲(chǔ)id='+hair.id+'相關(guān)圖片成功!');
    }
  });
  // 存儲(chǔ)照片相關(guān)信息
  var html = '姓名:'+hair.name+'<br>職業(yè):'+hair.jobtype+'<br>職業(yè)等級(jí):'+hair.jobtitle+'<br>簡介:'+hair.simpleinfo+'<br>個(gè)性簽名:'+hair.info+'<br>剪發(fā)價(jià)格:'+hair.cutmoney+'元<br>店名:'+hair.store.name+'<br>地址:'+hair.store.location+'<br>聯(lián)系方式:'+hair.telephone+'<br>頭像:<img src='+img_src+' >';
  fs.appendFile('./data/' +hair.store.name+'-'+ hair.name + '.html', html, 'utf-8', function (err) {
    if (err) {
      console.log(err);
    }
  });
  callback(null, hair);
}

步驟六:運(yùn)行爬蟲程序

輸入node hz.js命令運(yùn)行爬蟲程序,效果圖如下:

基于node.js如何制作簡單爬蟲

運(yùn)行成功后,發(fā)型師基本信息以html文件的形式存儲(chǔ)在data文件夾中,發(fā)型師頭像圖片存儲(chǔ)在image文件夾下:

基于node.js如何制作簡單爬蟲

基于node.js如何制作簡單爬蟲

以上是“基于node.js如何制作簡單爬蟲”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.rwnh.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:基于node.js如何制作簡單爬蟲-創(chuàng)新互聯(lián)
文章路徑:http://www.rwnh.cn/article6/ceijig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、虛擬主機(jī)、網(wǎng)站維護(hù)、App設(shè)計(jì)、營銷型網(wǎng)站建設(shè)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
临清市| 长顺县| 高台县| 辰溪县| 上饶市| 晋宁县| 峨眉山市| 平塘县| 乌苏市| 海兴县| 临沧市| 昆山市| 永安市| 白河县| 咸阳市| 宜黄县| 崇阳县| 遂溪县| 田东县| 昌都县| 三原县| 达拉特旗| 广河县| 报价| 伊金霍洛旗| 眉山市| 阿坝| 东宁县| 嘉善县| 肃北| 翁牛特旗| 利川市| 宁明县| 湛江市| 广汉市| 郑州市| 红桥区| 砀山县| 安宁市| 南平市| 龙泉市|