經過前兩篇文章,咱們深刻論述了後臺爬取的痛點,同時提出了對客戶端方案可行性的思考。今天咱們就來介紹一下全球第一個客戶端爬取平臺,今天咱們來揭開它的神祕面紗!javascript
前兩篇文章:
一篇文章瞭解爬蟲技術現狀
爬蟲技術(二)-客戶端爬蟲java
DSpider是客戶端爬取平臺臺,官網地址:dspider.dtworkroom.com/,如官網說述, DSpider主要由雲管理平臺、sdk、爬蟲商店三部分組成,咱們簡單說明一下這三者的各自職責:jquery
dSpider的爬取腳本是動態下發的,雲管理平臺主要用於配置腳本參數、更新腳本、統計腳本爬取狀態、錯誤分析等。若是你是開發者,那麼雲管理平臺同時也是發佈、管理本身腳本的地方。android
sdk負責從雲端請求腳本而後執行,最後將爬取結果傳給第三方APP. (官方提供了ios和android的sdk,但目前只開放了android sdk)。ios
相似於應用商店,是一個爬蟲倉庫,開發者能夠在裏面挑選所需的腳本,也能夠將本身的腳本發佈到爬蟲商店git
咱們以android爲例,官方提供了完整的文檔及demo:
Android集成文檔:dspider.dtworkroom.com/document/an…
Android demo:github.com/wendux/DSpi…github
咱們先來看看官方demo的運行效果:api
爬取簡書主頁全部文章標題和連接:
session
隱式爬取沒有進度條,demo中彈出了一個loading窗做爲指示:app
爬取腳本很是簡單,咱們看看爬取簡書的腳本:
/** * 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文檔。