自動化截web頁面的圖
一、工具介紹:
PhantomJS是一個基於webkit的JavaScript API。它使用QtWebKit作為它核心瀏覽器的功能,使用webkit來編譯解釋執行JavaScript代碼。任何你可以在基於webkit瀏覽器做的事情,它都能做到。它不僅是個隱形的瀏覽器,提供了諸如CSS選擇器、支持Web標准、DOM操作、JSON、HTML5、Canvas、SVG等,同時也提供了處理文件I/O的操作,從而使你可以向操作系統讀寫文件等。PhantomJS的用處可謂非常廣泛,諸如網絡監測、網頁截屏、無需瀏覽器的 Web 測試、頁面訪問自動化等。
一句話,使用該工具可以在后台截web界面的圖。
二、下載安裝
下載路徑
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
ubuntu安裝
sudo apt-get install fontconfig
三、案例
我有的博客首頁添加了一個世界各國用戶訪問的小工具,想着記錄每天數據的變化,又不想手動操作,因此想到了它!
創建一個js文件,vim a.js,內容如下:
var page = require('webpage').create(); system = require('system'); //要打印的url地址 var address = system.args[1]; //存儲文件路徑和名稱 var outputPng = './image.png'; //設置長寬 page.viewportSize = { width: 1280, height: 800 }; page.open(address, function(status) { if(status !== 'success') { console.log('Unable to load the address!'); phantom.exit(); } else { //截圖的偏移和寬高 看下面的圖 會是以出截圖位置以及各參數位置 page.clipRect = { top: 186, left: 101, width: 855, height: 207 }; //此文本可以通過phantomjs指令輸出到文件 console.log("獲得的分類統計數據已保存至文件!"); console.log("截圖中......"); page.render(outputPng); console.log("截圖已保存對應路徑!"); phantom.exit(); } });
執行:
./phantomjs a.js https:/url/zqj-blog/
【注意】
若執行報錯
:~/bi/phantomjs/phantomjs-2.1.1-linux-x86_64$ ./bin/phantomjs examples/hello.js ./bin/phantomjs: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory
請執行
sudo apt-get install libfontconfig
js文件中,page.clipRect里的四個參數指的內容看下圖:
使用以下參數:
得到的截圖是:
這個命令會在后台自動加載頁面的js,在內存中顯示出圖像,並截圖!