通過前兩篇文章,我們深入論述了後臺爬取的痛點,同時提出了對客戶端方案可行性的思考。今天我們就來介紹一下全球第一個客戶端爬取平臺,今天我們來揭開它的神祕面紗!
前兩篇文章:
一篇文章瞭解爬蟲技術現狀
爬蟲技術(二)-客戶端爬蟲
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的執行效果:
顯式爬取
爬取簡書主頁所有文章標題和連結:
隱式爬取(靜默)
隱式爬取沒有進度條,demo中彈出了一個loading窗作為指示:
爬取指令碼
爬取指令碼非常簡單,我們看看爬取簡書的指令碼:
/**
* 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文件。
注意事項
- 整合前需要去官網註冊,登入後要先建立應用
- 建立應用成功後會得到appid, sdk中需要。
- 應用建立之後需要給應用手動新增所需的爬蟲;系統預設會給每個新建的應用新增sid為1的測試爬蟲,該爬蟲資訊:dspider.dtworkroom.com/spider/1;
- sid為每一個爬蟲的id, 在後臺建立爬蟲後會得到sid. 你也可以去指令碼商店選擇。