[Python Note] Web Page Screenshot |開發筆記

Ichi Tsai
Ichi’s Dev Blog
Published in
3 min readNov 19, 2018

之前在 plot.ly offline 相關文章有介紹關於產生出的動態圖表存成 png 檔的問題(「存檔」的段落)。因為做 slack chatbot 的時候需要在大家點選連結前就有一個縮圖可以參考,所以開始找 web page screenshot 的 solution。

很多是自動開啟一個網頁視窗然後做截圖,但因為我們當時在 server 上跑完 html 圖表就想直接產生縮圖,沒有真正的瀏覽器可開,所以需要找 headless browser 的解法,最後選了 Pyppeteer 這個 repo。

實際運作

Readme 的用法寫得很清楚,sample code 馬上就能動覺得感人。第一次執行時會下載 Chromium,會等久一點 。我有將我使用的 code 放上 gist,下載後執行這兩行就可以得到 https://http.cat 這個網頁的截圖。(這網頁超可愛的都是貓,是上次去 Slack 開發者 meetup 認識的工程師做的 side project,她是狂熱貓奴,side project 都跟貓咪有關係)

python3 -m pip install pyppeteer
python3 webscreenshooter.py

第一次執行會下載 chromium
得到的截圖

說明

大家可以看到我的 code 中除了 sample code 有給的放在 screenshot 這個 method 以外還提供了自動產生檔名、存檔位置的 gen_output_path 以及按下快門的這隻 take_screenshot

gen_output_path 主要是因為自動化擷取一系列的網頁不想要手動一個一個取名,所以讓他自動抓 .html 前面的那個字當檔名,結合給定資料夾做輸出位置。take_screenshot 則是希望能在 async 任務結束後有個通知。

Pyppeteer 有支援視窗大小的設定,所以比其他 solution 要開心些,可以得到指定大小的圖片。今天就介紹到這邊!如果有其他好用的截圖工具歡迎留言~

Reference:

--

--

Ichi Tsai
Ichi’s Dev Blog

A proactive and helpful individual who values integrity above all else. Have both backend engineering experience and project management skills.