<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2758字,需瀏覽 6分鐘

           ·

          2021-03-09 12:37


          公眾號 “菜鳥學(xué)Python”, 設(shè)為 “星標(biāo)

          451篇原創(chuàng),和30w+一起學(xué)Python!

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

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

          這就是一個html轉(zhuǎn)pdf的問題,其實網(wǎng)上有很多不錯的html資源,但是苦于學(xué)習(xí)起來,不方便!于是小編就跟小麗保證,這點小事包在我身上。今天,小編就跟分享一下如何用Python把html資料變成pdf。


          01.抓取的學(xué)習(xí)資料
          如今網(wǎng)上的在線學(xué)習(xí)資料可謂是多如牛毛,為了方便講解,小編就利用python3.9.2的中文文檔作為演示的例子,來將其抓取并保存到本地,其網(wǎng)頁鏈接如下:
          https://docs.python.org/zh-cn/3.9/tutorial/index.html
          打開上述鏈接后,大家會在網(wǎng)頁中找到不同內(nèi)容的鏈接地址,包括了基礎(chǔ)的python字符、python語法等內(nèi)容。



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

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

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


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

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


          03.html轉(zhuǎn)pdf

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

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

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

          • 然后分別通過from_url、from_file和from_string的三種方式來保存為pdf文件;

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

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



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


          程序中首先將所有的html網(wǎng)頁保存為單獨的pdf文檔,然后通過PdfFileMerger類對象來實現(xiàn)pdf文檔的拼接。最后就可以得到全部的pdf內(nèi)容。最后我們通過視頻的展示,來看一下程序的效果吧。


          除此之外,程序不光可以抓取python3.9的中文文檔,針對其他的在線文檔,只需要對獲取網(wǎng)頁鏈接的程序進(jìn)行修改即可抓取,例如對于Flask中文文檔的抓取,程序只需要按照下圖進(jìn)行修改,即可將Flask的在線文檔保存為PDF文檔。


          04.總結(jié)
          學(xué)習(xí)Python其實非常有趣,也很有用。因為Python有大量的現(xiàn)成的庫,可以幫助我們把工作中的很多瑣碎的煩事輕松解決。小編將上述的程序稍加修改,很快就幫阿麗搞定了教程,保存為pdf發(fā)送給了她,小編與女神的關(guān)系更拉近了一步。
          其實源碼非常簡單,大家也照著敲一邊(看千邊讀萬邊,不如自己動手敲一邊),有不懂的地方可以找小助手(公眾號后臺輸入:小助手)。
          為了方便大家更好的理解,我們會錄制一個完整的視頻在B站(詳細(xì)見閱讀原文),一步一步講解這個程序,到時把源碼和視頻一起奉上!


          推薦閱讀:

          入門: 最全的零基礎(chǔ)學(xué)Python的問題  | 零基礎(chǔ)學(xué)了8個月的Python  | 實戰(zhàn)項目 |學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |


          趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


          AI: 會做詩的機器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          年度爆款文案



          點這里,直達(dá)菜鳥學(xué)PythonB站!!

          瀏覽 197
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线网站www亚洲观看 | 欧美三级少妇 | 亚洲精品乱码久久久久蜜桃网站 | 四虎欧美性爱 | 99久久精品互换人妻 |