一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

牛逼!40行Python代碼一鍵把html網(wǎng)頁(yè)保存為pdf,太方便了!

 風(fēng)聲之家 2021-03-11

原創(chuàng) 菜鳥(niǎo)哥 菜鳥(niǎo)學(xué)Python 3天前

圖片

最近臨近開(kāi)學(xué)了,大家都在忙著準(zhǔn)備各種學(xué)習(xí)的資料,準(zhǔn)備在新的學(xué)期好好學(xué)習(xí),充實(shí)自己。小編身邊的同學(xué)也是如此,最近,小編的同學(xué)小麗就遇到了一個(gè)很棘手的問(wèn)題。

她想將一個(gè)網(wǎng)頁(yè)的Python學(xué)習(xí)的教程打印下來(lái),方便自己來(lái)學(xué)習(xí),但是上千頁(yè)的教程,如果通過(guò)手動(dòng)的方式,一個(gè)一個(gè)的去轉(zhuǎn)成pdf并保存到本地,實(shí)在是麻煩的不。

這就是一個(gè)html轉(zhuǎn)pdf的問(wèn)題,其實(shí)網(wǎng)上有很多不錯(cuò)的html資源,但是苦于學(xué)習(xí)起來(lái),不方便!于是小編就跟小麗保證,這點(diǎn)小事包在我身上。今天,小編就跟分享一下如何用Python把html資料變成pdf。
01.抓取的學(xué)習(xí)資料
如今網(wǎng)上的在線學(xué)習(xí)資料可謂是多如牛毛,為了方便講解,小編就利用python3.9.2的中文文檔作為演示的例子,來(lái)將其抓取并保存到本地,其網(wǎng)頁(yè)鏈接如下:
https://docs./zh-cn/3.9/tutorial/index.html
打開(kāi)上述鏈接后,大家會(huì)在網(wǎng)頁(yè)中找到不同內(nèi)容的鏈接地址,包括了基礎(chǔ)的python字符、python語(yǔ)法等內(nèi)容。

02.獲取網(wǎng)頁(yè)鏈接

在上圖中,我們需要格外關(guān)注的是紅色方格標(biāo)注的鏈接,每個(gè)鏈接都會(huì)跳轉(zhuǎn)到對(duì)應(yīng)的子網(wǎng)頁(yè)中,而在子網(wǎng)頁(yè)中,就是我們想要保存的內(nèi)容。

可以看到,上圖中,在python速覽子頁(yè)面中,包含了我們需要提取的文字內(nèi)容。所以將html內(nèi)容保存為pdf的第一步便是獲取到子頁(yè)面的鏈接。由于教程大都是固定內(nèi)容,因此對(duì)于教程的網(wǎng)頁(yè),大都采用的是靜態(tài)頁(yè)面,在網(wǎng)頁(yè)源代碼中可以很輕松的找到子頁(yè)面的網(wǎng)頁(yè)鏈接。

圖片


對(duì)于子網(wǎng)頁(yè)的鏈接抓取,程序如下圖所示:

圖片

程序中,通過(guò)BeautifulSoup庫(kù)來(lái)解析網(wǎng)頁(yè)源代碼,然后提取所有的子頁(yè)面鏈接地址并返回,如果抓取失敗,則直接返回None。

03.html轉(zhuǎn)pdf

在得到子網(wǎng)頁(yè)的鏈接后,接下來(lái)就是將html的子網(wǎng)頁(yè)保存為pdf文件。小編使用的pdfkit庫(kù),pdfkit庫(kù)可以將網(wǎng)頁(yè)保存為pdf文檔。首先小編來(lái)介紹一下pdfkit庫(kù)的安裝。
  • 下載https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.mxe-cross-win64.7z 并解壓到本地文件中。(后臺(tái)輸入:pdf) 直接獲取。
  • 將解壓文件中的bin文件路徑添加到系統(tǒng)變量Path中。
  • 執(zhí)行pip install pdfkit
  • 執(zhí)行pip install wkhtmltopdf
按照上述的操作流程,就可以安裝pdfkit庫(kù)。對(duì)于pdfkit庫(kù)的使用,常見(jiàn)的用法有以下三種:

上面的程序主要完成幾下幾步:

首先需要指定wkhtmltopdf.exe文件的路徑;

  • 然后分別通過(guò)from_url、from_file和from_string的三種方式來(lái)保存為pdf文件;

  • 需要注意的是,from_file和from_url中的第一個(gè)參數(shù)必須是一個(gè)html的字符串或者是html文檔的列表;

  • 但是小編通過(guò)程序運(yùn)行發(fā)現(xiàn),from_url第一個(gè)參數(shù)只能是html的字符串,不能是html的列表



因此,pdfkit庫(kù)只能將子網(wǎng)頁(yè)保存為單獨(dú)的pdf文檔,無(wú)法直接通過(guò)pdfkit庫(kù)將所有的子網(wǎng)頁(yè)拼接成一個(gè)完整的pdf文檔,小編通過(guò)PyPDF2庫(kù)中的PdfFileMerger類(lèi)來(lái)實(shí)現(xiàn)pdf文檔的拼接。程序如下圖所示。

程序中首先將所有的html網(wǎng)頁(yè)保存為單獨(dú)的pdf文檔,然后通過(guò)PdfFileMerger類(lèi)對(duì)象來(lái)實(shí)現(xiàn)pdf文檔的拼接。最后就可以得到全部的pdf內(nèi)容。最后我們通過(guò)視頻的展示,來(lái)看一下程序的效果吧。
除此之外,程序不光可以抓取python3.9的中文文檔,針對(duì)其他的在線文檔,只需要對(duì)獲取網(wǎng)頁(yè)鏈接的程序進(jìn)行修改即可抓取,例如對(duì)于Flask中文文檔的抓取,程序只需要按照下圖進(jìn)行修改,即可將Flask的在線文檔保存為PDF文檔。
04.總結(jié)
學(xué)習(xí)Python其實(shí)非常有趣,也很有用。因?yàn)镻ython有大量的現(xiàn)成的庫(kù),可以幫助我們把工作中的很多瑣碎的煩事輕松解決。小編將上述的程序稍加修改,很快就幫阿麗搞定了教程,保存為pdf發(fā)送給了她,小編與女神的關(guān)系更拉近了一步。
其實(shí)源碼非常簡(jiǎn)單,大家也照著敲一邊(看千邊讀萬(wàn)邊,不如自己動(dòng)手敲一邊),有不懂的地方可以找小助手(公眾號(hào)后臺(tái)輸入:小助手)。
為了方便大家更好的理解,我們會(huì)錄制一個(gè)完整的視頻在B站(詳細(xì)見(jiàn)閱讀原文),一步一步講解這個(gè)程序,到時(shí)把源碼和視頻一起奉上!

不看的原因

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    日本不卡在线视频你懂的| 亚洲欧美日本国产有色| 日韩精品一区二区三区av在线| 激情中文字幕在线观看| 欧美欧美日韩综合一区| 欧美野外在线刺激在线观看| 午夜国产精品福利在线观看| 正在播放玩弄漂亮少妇高潮| 国产欧美日韩一级小黄片| 日韩高清毛片免费观看| 亚洲熟女乱色一区二区三区| 欧美亚洲综合另类色妞| 日本午夜精品视频在线观看| 91日韩欧美在线视频| 日韩免费成人福利在线| 亚洲天堂精品1024| 国产二级一级内射视频播放| 国产人妻熟女高跟丝袜| 久久人人爽人人爽大片av| 日韩欧美亚洲综合在线| 好吊日在线视频免费观看| 日韩视频在线观看成人| 日韩精品成区中文字幕| 一区二区三区欧美高清| 亚洲做性视频在线播放| 国产精品午夜福利在线观看| 日本精品啪啪一区二区三区| 午夜福利网午夜福利网| 亚洲欧洲成人精品香蕉网| 久久偷拍视频免费观看| 欧洲日本亚洲一区二区| 69精品一区二区蜜桃视频| 国产户外勾引精品露出一区| 国产精品日韩精品一区| 熟妇久久人妻中文字幕| 精品亚洲av一区二区三区| 久久99亚洲小姐精品综合| 国产情侣激情在线对白| 久久精品亚洲欧美日韩| 国产小青蛙全集免费看| 亚洲a码一区二区三区|