現在很多瀏覽器或瀏覽器工具欄、插件都提供網頁截圖的功能,不過大多數都需要鼠標或鍵盤手工操作,而不能通過命令行自動化完成。有時我們可能需要每天定時對某些網頁截圖,或者批量地對多個URL截圖,這時這些的需要手工操作的截圖工具或插件就有一點不夠用了。不過幸運的是,有一些免費的可以通過命令行方式操作的網頁截屏軟件或瀏覽器插件可以幫我們解決這個問題,下面介紹兩款我經常使用的。
第一款是IECapt,官方主頁在 http://iecapt.sourceforge.net/ ,這是一個免費開源的軟件,有C++和C#兩種語言的版本。
這款軟件沒有GUI,只能在純命令行方式下運行,運行的命令為:
- IECapt –url=http://www.jfrwli.cn/ –out=localfile.png
其中參數 –url 后面跟的是你要截圖的網站的地址,–out 后面跟的是截圖后的圖片文件的保存名。這兩個參數是最常用的,另外還有一些參數,比如 –delay ,可以指定頁面打開后過多少秒再截圖,這在截取某些使用了 Ajax 等延遲加載技術的頁面時非常有用。更多的參數可以用 IECapt –help 命令來查看。
這個軟件很好用,不過如同它的名字所說的,它是基于IE的,這樣一來基本上也只能在Windows系統上使用。截圖時它實際上是在后臺調用了本機上安裝的IE瀏覽器對頁面進行渲染,一般來說,你在IE瀏覽器下看到某個頁面是什么樣子,用IECapt截的圖也是那個樣子。
IECapt的主頁上還介紹了另一個跨平臺的基于 WebKit 引擎的網頁截圖軟件 CutyCapt ,這個軟件需要 Qt 庫的支持,使用方法和 IECapt 幾乎一樣,但是有更多更靈活的參數,這兒就不詳細介紹了。
要介紹的另一款可以在命令行模式下使用的網頁截圖工具是 Firefox 的插件 PageSaver ,主頁是 http://pearlcrescent.com/products/pagesaver/ 。
這個插件有需要付費的專業版以及免費的基本版,對于一般的命令行截圖來說,基本版就足夠了。安裝好以后,它會在瀏覽器地址欄旁邊添加一個照相機圖標的按鈕,點擊即可像普通的網頁截圖插件一樣對當前網頁進行截圖,也可以點擊圖標旁的下拉三角做一些設置,比如設計默認保存文件名規則。同時,你可以通過命令行對指定URL進行截圖,比如:
- firefox -saveimage
這個命令會調用系統的 Firefox ,打開指定的網址并截圖,如果 Firefox 當時不在運行,這個命令會先打開 Firefox ,截圖完成后再關閉 Firefox 。需要注意的是,如果要在命令行下使用這個插件截圖,最好關閉火狐瀏覽器“恢復上次會話”的功能,否則命令行新打開頁面時有可能一直停在確認是否打開上次會話的界面。
截圖之后圖片會被保存在執行命令的當前目錄,文件名格式需要在插件的選項面版中設置(專業版可以在截圖命令中再指定保存文件名),圖片可保存為PNG或JPEG兩種格式。這個插件是基于 Firefox 的,截圖當然也是通過 Firefox 瀏覽器渲染的。
IECapt和Firefox PageSaver,一個基于 IE,一個基于 Firefox,兩者結合,再加上一些自寫腳本的補充,基本上可以滿足大部分命令行方式截圖的需求了。