爬蟲(三)-客戶端爬取Android SDK釋出

wendux發表於2017-03-23

通過前兩篇文章,我們深入論述了後臺爬取的痛點,同時提出了對客戶端方案可行性的思考。今天我們就來介紹一下全球第一個客戶端爬取平臺,今天我們來揭開它的神祕面紗!

前兩篇文章:
一篇文章瞭解爬蟲技術現狀
爬蟲技術(二)-客戶端爬蟲

DSpider平臺

DSpider是客戶端爬取平臺臺,官網地址:dspider.dtworkroom.com/,如官網說述, DSpider主要由雲管理平臺、sdk、爬蟲商店三部分組成,我們簡單說明一下這三者的各自職責:

雲管理平臺

dSpider的爬取指令碼是動態下發的,雲管理平臺主要用於配置指令碼引數、更新指令碼、統計指令碼爬取狀態、錯誤分析等。如果你是開發者,那麼雲管理平臺同時也是釋出、管理自己指令碼的地方。

SDK

sdk負責從雲端請求指令碼然後執行,最後將爬取結果傳給第三方APP. (官方提供了ios和android的sdk,但目前只開放了android sdk)。

爬蟲商店

類似於應用商店,是一個爬蟲倉庫,開發者可以在裡面挑選所需的指令碼,也可以將自己的指令碼釋出到爬蟲商店

整合到APP

我們以android為例,官方提供了完整的文件及demo:
Android整合文件:dspider.dtworkroom.com/document/an…
Android demo:github.com/wendux/DSpi…

我們先來看看官方demo的執行效果:

爬蟲(三)-客戶端爬取Android SDK釋出
demo

顯式爬取

爬取簡書主頁所有文章標題和連結:

爬蟲(三)-客戶端爬取Android SDK釋出
爬取進度

爬蟲(三)-客戶端爬取Android SDK釋出
爬取結果

隱式爬取(靜默)

隱式爬取沒有進度條,demo中彈出了一個loading窗作為指示:

爬蟲(三)-客戶端爬取Android SDK釋出
隱式爬取

爬取指令碼

爬取指令碼非常簡單,我們看看爬取簡書的指令碼:

/**
 * Created by du on 16/11/21.
 */
dSpider("jianshu", function(session,env,$){
    session.showProgress();
    var $items=$("div.title");
    var count=$items.length;
    session.log("共"+count+"條");
    session.setProgressMax(count)
    session.setProgressMsg("正在初始化");
    var i=0;
   //模擬進度,每隔200ms向端上傳遞一次資料
    var timer=setInterval(function(){
      session.setProgress(i+1);
      var title=$items.eq(i).text();
      session.setProgressMsg(title);
      session.push({title:title, url:$items.eq(i).parent().attr("href")});
      if(++i>=count){
       clearInterval(timer);
       session.finish();
      }
    },200);
})複製程式碼

可見爬取指令碼非常簡單:用jquery解析網頁,然後再通過session物件和native 進行互動。詳細的API文件請移步dSpider Javascript API文件

注意事項

  1. 整合前需要去官網註冊,登入後要先建立應用
  2. 建立應用成功後會得到appid, sdk中需要。
  3. 應用建立之後需要給應用手動新增所需的爬蟲;系統預設會給每個新建的應用新增sid為1的測試爬蟲,該爬蟲資訊:dspider.dtworkroom.com/spider/1;
  4. sid為每一個爬蟲的id, 在後臺建立爬蟲後會得到sid. 你也可以去指令碼商店選擇。

相關文章