casperjs爬蟲

1、casperjs簡介

casperjs是一個基於PhantomJs的導航腳本和測試工具,它能夠完成西面的常見任務。javascript

  • 定義 & 排序瀏覽器導航步驟html

  • 填充 & 提交表單java

  • 點擊 & 跟蹤連接node

  • 捕獲網頁截圖 (還能夠截取某一區域)python

  • 在遠程DOM上進行斷言測試npm

  • 記錄事件windows

  • 下載資源,包括二進制文件瀏覽器

  • 編寫功能測試套件,結果保存爲JUnit XML文件框架

  • 抓取網頁內容異步

2、依賴環境安裝

安裝phantomjs
$ npm install -g phantomjs

安裝 Python,若是是windows注意環境變量配置

安裝casperjs
$ npm install -g casperjs

確認是否安裝成功

$ phantomjs --version
$ python --version
$ casperjs --version

3、怎麼用

代碼框架

var casper = require('casper').create(); //新建一個頁面  
casper.start(url1); //添加第一個URL  
casper.thenOpen(url2); //添加第二個URL,依次類推  
casper.run(); //開始導航

表單填充

casper.start('url', function() { //打開頁面,並指定一個回調函數  
    this.fill('form[id="login-form"]', { //定位到一個form中  
        'username': 'chuck', //給name爲username的表單控件填充值'chuck'  
        'password': 'n0rr1s' //給name爲password的表單控件填充值'n0rr1s'  
    }, true); //參數true,表示填充完畢後,馬上提交表單  
    this.thenClick("#id", function() {//若是不自動提交,可使用點擊事件,
        //成功回調函數
    })
});

網頁截圖

casper.start('url', function() {  
    this.captureSelector('capture.png', '#id'); 
    //給頁面中'#id'選擇器匹配的元素截圖,輸出圖片文件名爲cpature.png,目錄爲當前目錄  
});

異步操做

casper.start('https://twitter.com/casperjs_org', function() {  
    this.waitForSelector('#id', function() { //等到'#id'選擇器匹配的元素出現時再執行回調函數  
    }, function() {  
        this.die('失敗').exit();//失敗時調用的函數,輸出一個消息,並退出  
    }, 2000); //超時時間,兩秒鐘後指定的選擇器還沒出現,就算失敗   
});

簡單的示例

var casper = require('casper').create();
casper.start('http://www.baidu.com/', function() {
  this.echo(this.getTitle());// 獲取網頁title
});

casper.then(function() {
  this.captureSelector('baidu-homepage.png', 'html'); //  生成一個png圖片
});

casper.run();

4、總結

  • casperjs優勢是能夠模仿用戶行爲,能夠爬去異步加載的數據

  • 編寫casperjs很相似寫javascript可是不同的

  • 上面的學習只能夠完成簡單的爬蟲,還有驗證碼和數據保存須要解決

  • casperjs的功能和選擇器是很是強大的,你們能夠看一下 API

下一篇文章會寫用node,Tesseract來解決上面說到的問題

相關文章
相關標籤/搜索