儲存網頁為PDF

2022-09-12 19:30:16 字數 588 閱讀 9373

最近在做乙個專案,需要爬取乙個系統的所有(動態)頁面,並將每個網頁都存為乙個pdf檔案。由於是內部系統,沒有反爬,所以爬蟲編寫並不複雜,儲存網頁支援python的工具搜了下,主要有兩個:

1,pdfkit,基於wkhtmlpdf,後者是c語言編寫的;

2,weasyprint,好像是乙個純python的工具。

在實際使用中,基於wkhtmlpdf的pdfkit功能更為全面,支援選項很多,支援較為複雜的js和css,儲存下來的pdf檔案和原網頁比較類似。weasyprint則比較弱,cookie和authentication都不支援,不過可以通過自定義url_fetcher來作為workaround,weasyprint轉換pdf的效果也比較差,基本都是白板,css渲染不如前者。不過我也用瀏覽器的列印成pdf功能測試了下,chrome和safari打出來也都是白板。

修改css檔案的方式也值得一記,因為不能對系統本身修改,而wkhtmlpdf不支援替換css(user-style-sheet不好用!),所以只好採用charles**+替換的方式。啟動charles後,在目標css檔案上點右鍵,選擇map local...就可以用本地的css檔案替換遠端的css檔案了,典型的中間人攻擊,哈哈。

使用canvas儲存網頁為pdf檔案支援跨域

前言 使用canvas儲存網頁為pdf檔案支援跨域 正文思路 繼續使用canvas截圖後將畫布內容轉換為pdf檔案。引入canvas的js檔案,js檔案獲取位址官網主頁 div按鈕 匯出為pdf按鈕 需要獲取為pdf的div jsp 此次網頁改為pdf,與上次截圖網頁為png,使用同一種技術,都是先...

使用canvas儲存網頁為pdf檔案支援跨域

前文 canvas截圖網頁為 思路 繼續使用canvas截圖後將畫布內容轉換為pdf檔案。引入canvas的js檔案,js檔案獲取位址官網主頁 div按鈕 匯出為pdf按鈕 需要獲取為pdf的div jsp 此次網頁改為pdf,與上次截圖網頁為png,使用同一種技術,都是先使用canvas截圖畫布後...

Selenium儲存網頁為mhtml方法

mhtml即mime html,歸檔網頁,將樣式和指令碼全部整合到乙個檔案中。chrome devtools protcal api中包含了page.capturesnapshot方法,可以獲取到網頁的mhtml格式內容。我們使用selenium的driver.execute cdp cmd 執行該...