本文主要以百度首頁爲例,記錄Chrome瀏覽器中,保存頁面的多種方式(涉及一些Chrome的“小技巧”),涉及插件使用請自行嘗試,本文僅對不使用插件的情況下保存頁面的不同處理方法做簡單介紹。
系統環境:Windows10、Chrome 70.0.3538.110(正式版本) (64 位).
保存離線頁面
說到頁面離線保存,首先想到的就是右鍵保存(Ctrl + S
),這樣的方式保存會把當前頁面的資源保存下來,並放到一個目錄下面,大致效果如下:
在想要編輯頁面源碼等情況下,可以使用此方法,如果只想獲取單個離線頁面文件用來離線查看,則可以嘗試保存當前頁面爲MHTML文檔,可以使用插件(Save As MHT
、Save As MHTML
等) 或Chrome原生支持來完成此功能。
Chrome瀏覽器保存MHTML格式頁面
很多瀏覽器(IE 5.0+、Opera 9.0+、Chrome等)都支持存儲MHTML格式頁面,大多不支持的瀏覽器,也有對應的插件可以處理。
在Chrome中,要保存MHTML格式頁面,需要在Chrome的實驗×××設置中開啓。
首先,在Chrome瀏覽器的地址欄輸入 chrome://flags
,可以進入Chrome的實驗×××設置頁面
在頁面的搜索框內輸入 mhtml
,找到 Save Page as MHTML
項(或直接在地址欄輸入 chrome://flags/#save-page-as-mhtml
),將該項設置爲 Enabled
,然後點擊底部提示中的 RELAUNCH NOW
按鈕重啓瀏覽器,使修改生效。
重啓瀏覽器後,在需要保存的頁面中,右鍵,選擇另存爲(或快捷鍵 Ctrl + S
),彈出的另存爲窗口,保存類型選擇 網頁(單個文件)
附:IE保存MHT格式頁面
MHTML(維基百科 | 百度百科),網頁歸檔,又稱單一檔案網頁或網頁封存檔案,可以將一個多附件網頁保存爲單一文檔,文檔擴展名爲 .mht
或 .mhtml
。IE瀏覽器支持保存 .mht
文件,下面做簡單介紹。
IE瀏覽器中打開需要保存的百度首頁頁面鏈接,然後右鍵保存(Ctrl + S
),出現的保存窗口中,選擇保存類型 *.mht
此時可以看到一個百度的MHT文件,文本編輯器打開後,可以看到類似下面的代碼:
這裏可以看到MHTML文檔是基於超文本標記語言的,裏面可以看到經過處理的頁面代碼。
保存PDF頁面
Chrome中PDF格式頁面保存,可以通過 PrintFriendly & PDF (有Chrome插件)等在線處理服務或使用Chrome插件(Save As PDF)實現,也可以通過打印來實現。
Chrome打印預覽中保存頁面PDF
在想保存的頁面中,快捷鍵 Ctrl + P
(或右鍵菜單 -> 打印(p)...
),打開頁面的打印瀏覽界面
此時可以看到站點的打印預覽效果(默認黑白顯示),在左側選項中找到 目標打印機
-> 更改...
,在彈出的選擇界面中,找到 另存爲 PDF
,雙擊即可
此時就可以看到站點的彩色版預覽效果,點擊左側的 保存
按鈕即可將站點存儲爲PDF格式。
保存圖片頁面
部分情況下,可能會需要截取頁面,有時僅需要截取部分內容,這通過普通的截圖工具即可完成,如QQ截取、微信截圖、Windows自帶截圖工具等等;而有時可能需要截取頁面長圖,這也可以通過工具來實現,如FastStone Capture、Chrome插件(FireShot、Full Page Screen Capture)等。這裏簡單介紹 FastStone Capture
和Chrome截圖方法,其他方式不贅述。
截圖工具實現圖片頁面保存
打開工具 FastStone Capture ,選擇 捕捉滾動窗口
按鈕,則可以進入長圖截圖窗口
FastStone Capture的捕捉滾動窗口,可以支持自動滾動窗口及自定義滾動窗口,可以根據需要選擇,以達到截取所需內容的目的(自定義滾動截圖不太好使,不容易把控結束時間,截取的圖片可能需要再次編輯)
Chrome瀏覽器命令行菜單實現圖片頁面保存
在Chrome瀏覽器的開發者工具中(devtools),也提供了類似主流編輯器(Sublime Text, Atom, Visual Studio Code等)中的命令行菜單,通常使用 Ctrl + Shift + P
( Mac 上是 Cmd + Shift + P
) 。如Sublime Text的命令行菜單:
使用Sublime Text的朋友應該很熟悉這個了,而命令行菜單帶來的遍歷是不言而喻的。
在Chrome瀏覽器中,首先 F12
打開 DevTools
開發者工具,然後在DevTools中使用快捷鍵 Ctrl + Shift + P
,就可以打開Chrome的命令行菜單:
在命令行菜單中,輸入 capture
就可以看到有如下選項
這裏可以看到,Chrome命令行菜單提供了三個用於界面捕獲的命令
- Capture full size screenshot - 截取整個站點(長圖)
- Capture node screenshot - 截取選擇的DOM節點
- Capture screenshot - 截取視圖窗口顯示的部分
在命令行內輸入對應的命令,即可完成截圖。
附:Chrome瀏覽器站點移動端視圖截圖
上面介紹了截取站點方法,這裏額外說下,想截取站點在不同像素顯示下響應顯示時,截取類似移動端長圖的方法。
同樣在Chrome瀏覽器中,打開DevTools,然後點擊按鈕,點擊 toggle device toolbar(切換設備工具欄)
,可以看到類似如下效果:
在這個工具欄中,可以通過切換不同的設備(不同的分辨率),來查看站點在不同的分辨率下的顯示情況,可以很好的輔助站點的響應式開發工作。在這個視圖中,可以通過點擊頂部菜單項最右邊的三個點,來打開菜單,裏面有截取屏幕的選項,如下:
Headless Chrome模式完成頁面截圖及轉存PDF
Headless Chrome is shipping in Chrome 59. It's a way to run the Chrome browser in a headless environment. Essentially, running Chrome without chrome! It brings all modern web platform features provided by Chromium and the Blink rendering engine to the command line.
Chrome 59以上版本支持Headless Chrome,Headless Chrome是可以命令行模式運行Chromium和Blink渲染引擎提供功能。可以在無UI窗口的情況下,完成很多瀏覽器的操作,是自動測試和服務器環境的絕佳工具。更多內容參看官方說明。
Headless Chrome 保存頁面
管理員模式運行命令行窗口,使用 cd
命令進入Chrome瀏覽器安裝目錄,輸入類似如下命令:
chrome --headless --disable-gpu --dump-dom https://www.baidu.com
測試了下,好像沒有效果,具體原因不清楚。。。有知道的朋友,希望可以不吝賜教!!!
Headless Chrome 保存頁面PDF
管理員模式運行命令行窗口,使用 cd
命令進入Chrome瀏覽器安裝目錄,輸入類似如下命令:
chrome --headless --disable-gpu --print-to-pdf='存儲路徑\文件名稱' https://www.baidu.com
注意,此處如果不給存儲路徑和文件名稱,則保存的pdf可以在Chrome瀏覽器安裝目錄下對應版本號的目錄文件下,文件名稱爲 output.pdf
Headless Chrome 頁面截圖
管理員模式運行命令行窗口,使用 cd
命令進入Chrome瀏覽器安裝目錄,輸入類似如下命令:
chrome --headless --disable-gpu --screenshot='存儲路徑\文件名稱' https://www.baidu.com
## 設置圖片大小(尺寸大小好像沒有用,具體作用自行研究)
chrome --headless --disable-gpu --screenshot='存儲路徑\文件名稱' --window-size=寬,高 https://www.baidu.com
注意,此處如果不給存儲路徑和文件名稱,則保存的pdf可以在Chrome瀏覽器安裝目錄下對應版本號的目錄文件下,文件名稱爲 output.pdf
Puppeteer
Chrome官方推出的Puppeteer(封裝了Headless Chrome的Node庫),可以完成瀏覽器中手動執行的大多數操作:
- 生成頁面的屏幕截圖和PDF。
- 抓取SPA(單頁面應用程序)並生成預渲染內容(即“×××”(服務器端渲染))。
- 自動化表單提交,UI測試,鍵盤輸入等。
- 創建最新的自動化測試環境。使用最新的JavaScript和瀏覽器功能直接在最新版本的Chrome中運行測試。
- 捕獲站點的時間線跟蹤,以幫助診斷性能問題。
-
測試Chrome擴展程序。
類似的還可以嘗試PhantomJS -- 可編寫腳本的無頭瀏覽器