casperjs是一個基於PhantomJs的導航腳本和測試工具,它能夠完成西面的常見任務。javascript
定義 & 排序瀏覽器導航步驟html
填充 & 提交表單java
點擊 & 跟蹤連接node
捕獲網頁截圖 (還能夠截取某一區域)python
在遠程DOM上進行斷言測試npm
記錄事件windows
下載資源,包括二進制文件瀏覽器
編寫功能測試套件,結果保存爲JUnit XML文件框架
抓取網頁內容異步
安裝phantomjs$ npm install -g phantomjs
安裝 Python,若是是windows注意環境變量配置
安裝casperjs$ npm install -g casperjs
確認是否安裝成功
$ phantomjs --version $ python --version $ casperjs --version
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();
casperjs優勢是能夠模仿用戶行爲,能夠爬去異步加載的數據
編寫casperjs很相似寫javascript可是不同的
上面的學習只能夠完成簡單的爬蟲,還有驗證碼和數據保存須要解決
casperjs的功能和選擇器是很是強大的,你們能夠看一下 API
下一篇文章會寫用node,Tesseract來解決上面說到的問題