整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          牛逼!40行Python代碼把html網頁保存為pdf,太方便了

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

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

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

          01.抓取的學習資料

          如今網上的在線學習資料可謂是多如牛毛,為了方便講解,小編就利用python3.9.2的中文文檔作為演示的例子,來將其抓取并保存到本地,其網頁鏈接如下:

          https://docs.python.org/zh-cn/3.9/tutorial/index.html

          打開上述鏈接后,大家會在網頁中找到不同內容的鏈接地址,包括了基礎的python字符、python語法等內容。

          02.獲取網頁鏈接

          在上圖中,我們需要格外關注的是紅色方格標注的鏈接,每個鏈接都會跳轉到對應的子網頁中,而在子網頁中,就是我們想要保存的內容。

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

          對于子網頁的鏈接抓取,程序如下圖所示:

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


          03.html轉pdf

          在得到子網頁的鏈接后,接下來就是將html的子網頁保存為pdf文件。小編使用的pdfkit庫,pdfkit庫可以將網頁保存為pdf文檔。首先小編來介紹一下pdfkit庫的安裝。

          • 下載https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.mxe-cross-win64.7z 并解壓到本地文件中。(后臺輸入:pdf) 直接獲取。
          • 將解壓文件中的bin文件路徑添加到系統變量Path中。
          • 執行pip install pdfkit
          • 執行pip install wkhtmltopdf

          按照上述的操作流程,就可以安裝pdfkit庫。對于pdfkit庫的使用,常見的用法有以下三種:

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

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

          • 然后分別通過from_url、from_file和from_string的三種方式來保存為pdf文件;
          • 需要注意的是,from_file和from_url中的第一個參數必須是一個html的字符串或者是html文檔的列表;
          • 但是小編通過程序運行發現,from_url第一個參數只能是html的字符串,不能是html的列表。


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

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


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

          04.總結

          學習Python其實非常有趣,也很有用。因為Python有大量的現成的庫,可以幫助我們把工作中的很多瑣碎的煩事輕松解決。小編將上述的程序稍加修改,很快就幫阿麗搞定了教程,保存為pdf發送給了她,小編與女神的關系更拉近了一步

          言:

          通過前面的學習,已經知道如何打包js和json文件,

          也了解了如何配置打包樣式文件的loader

          但是之前我們都是手動的創建html,并且手動的引入打包后的js文件,這樣會有一定的不便,

          因此接下來就一起看看webpack是如何處理html文件的

          1. 安裝使用處理html的插件

          說明:

          1. webpack打包html文件資源,不是使用loader而是使用插件
          2. 使用html-webpack-plugin插件自動生成html文件

          1.1 下載插件

          yarn add html-webpack-plugin -D

          1.2 配置插件

          在webpack.config.js中配置插件說明

          1. 引入下載好的插件
          2. 在plugins中配置插件

          代碼如下:

          // 1. 引入處理html插件,

          const HtmlWebpackPlugin =

          require("html-webpack-plugin")const {resolve} = require("path");module.exports = {
          entry: "./src/main.js",
          output:{
          filename:"bundle.js",
          path: resolve(__dirname,"dist")
          },
          module: {
          rules:[
          {
          test: /\.css$/,
          use:["style-loader","css-loader"]
          }
          ]
          },
          // 配置插件
          plugins:[
          // 配置 處理html插件
          new HtmlWebpackPlugin()
          ],
          mode:"development"}

          1.3 打包結果說明

          通過webpack命令打包

          1. 會發現打包后的index.html是一個空的html文件 ,沒有其他結構內容
          2. 因為插件html-webpack-plugin是自動創建一個新的html文件,并自動引入bundle.js
          3. 因此我們自己開發的index.html內容并沒有處理到打包后的html文件中

          配置代碼如下:

          const HtmlWebpackPlugin =

          require("html-webpack-plugin")const {resolve} = require("path");module.exports = {
          // ...

          plugins:[
          new HtmlWebpackPlugin({
          // 配置html打包模板
          template:"./src/main.html"
          })
          ]

          // ...}

          2. 將我們自己寫html內容插入打包后的html文件

          2.1 說明

          1. src文件夾使我們開發文件夾,因此我們可能會在這個文件夾中開發html文件內容
          2. 但是html-webpack-plugin會在打包的dist目錄中生成新的html文件,
          3. 新生成的文件中,不包含我們開發的html文件內容
          4. 如果我們需要將自己開發的html內容也插入到打包后的html文件中,就需要配置

          2.2 在src文件中新建html,并開發內容

          <body>
          <div>Hello World</div></body>

          2.3 在webpack.config.js配置插件

          在webpack.config.js的插件html-webpack-plugin中配置html模板

          將我們開發的html文件中的內容插入到plugin生成的html文件中

          代碼如下:

          const HtmlWebpackPlugin =

          require("html-webpack-plugin")const {resolve} = require("path");module.exports = {
          // ...

          plugins:[
          new HtmlWebpackPlugin({
          // 配置html打包模板
          template:"./src/main.html"
          })
          ]

          // ...}

          此時,打包后, 查看dist目錄中index.html文件中就擁有了我們開發的內容

          3. 配置本地webpack

          3.1 為什么需要配置本地webpack

          1. webpack版本的不同,可能會對項目造成影響
          2. 項目是多人協同開發,如果每一個人電腦都全局安裝不同的webpack,會導致項目配置出問題
          3. 因此需要配置項目本地webpack,以及配置腳本運行webpack命令

          3.2 下載配置本地webpack

          下載本地webpack

          $ yarn add webpack webpack-cli -D

          3.3 配置腳本命令

          配置腳本命令使用webpack打包說明

          1. 在所有的終端里使用webpack命令,默認都是全局安裝的webpack
          2. 項目為了保證統一,需要使用項目本地webpack進行打包
          3. 腳本中運行的webpack是使用本地webpack命令

          在package.json中配置腳本命令

          "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1",
          "build": "webpack"
          },

          配置完成以后就可以使用npm run build命令來使用本地webpack了

          我辦app是焦作市委、市政府推出的2020年十大民生幸福工程之一,是面向廣大市民的一站式“互聯網+”城市服務云平臺。焦我辦app集政務服務、公共服務、便民服務于一體,整合了該市大數據平臺、政務服務業務中臺、公共信用信息平臺、“企業紓困360”平臺和人口庫、法人庫、電子證照庫等政務信息化建設方方面面的成果。首批整合接入19個市直部門的數據端口,在公積金、社保、不動產和大廳預約叫號、一鍵挪車等領域推出了5大亮點服務,涵蓋在線城市服務123項。而且,焦我辦app融合全市政務服務和公共服務事項,運用大數據技術提升網上政務服務能力,滿足人民群眾辦事需求,為市民生活提供全方位的民生保障。并在多個領域推出便民利企服務,真正實現“數據多跑路,群眾少跑腿”,有需要的朋友快來下載看看了。

          軟件功能

          1、在線辦事:政務大廳預約叫號、水氣暖報裝、公積金提取。
          2、信息查詢:公積金、不動產、駕駛證、違章記錄等個人信息直查。
          3、全新界面:界面簡潔但是容易使用,重要信息可以清晰獲得。
          4、附近線路:精確查找附近線路,自由切換乘車站點,輕松選擇乘車站點。
          5、車輛信息:還有幾輛車、還有幾站到實時掌握,緩解您等車焦慮,避免錯過車輛。

          焦我辦防疫報備功能

          市政務服務和大數據管理局落實拓展“焦我辦”平臺功能這一市重點民生實事又有新舉措——助力我市疫情防控,“焦我辦”APP新增防疫報備功能。
          為積極應對國內外區域疫情形勢及元旦、春節人員流動頻繁等情況,有效做到防線前移、關口內置,提升我市常態化疫情防控能力,市政務服務和大數據管理局按照市疫情防控指揮部要求,依托大數據平臺和政務業務中臺,以焦作城市門戶APP“焦我辦”為載體,近日正式上線“防疫報備”模塊,以方便省外來(返)焦人員、省內涉疫地區來(返)焦人員和我市出省返回人員落實“五個報備”。
          1、“五個報備”是什么
          按照我市疫情防控相關要求,所有省外來(返)焦人員、省內涉疫地區來(返)焦人員和我市出省返回人員均要提前進行線上報備。“五個報備”中,因公來焦的省外人員或省內涉疫地區人員,由接待單位提前完成線上報備;個人來焦出差、旅游的省外人員或省內涉疫地區人員,由個人進行報備,所入住的酒店賓館、游玩的景區負責指導監督其完成線上報備;從省內涉疫地區、省外回焦返鄉或來焦探親訪友的人員,由個人或接待親友進行報備,居住地所在社區(村)負責廣泛宣傳和指導、督促;團隊來焦旅游的省外人員或省內涉疫地區人員,由個人進行報備,所入住酒店賓館、旅行社和景區負責指導監督其完成線上報備;需離焦出省的本市人員,在出發前由個人進行報備,所在單位或社區(村)負責指導監督其提前完成線上報備。上述人員中,因身體或未配備智能手機等原因無法完成個人報備的,由履行報備指導監督責任的相關單位代為報備。
          2、如何進行線上報備
          據了解,線上報備需在“焦我辦”APP進行。相關人員可通過手機應用市場搜索“焦我辦”,下載安裝“焦我辦”APP,在“我的”進行注冊登記和人臉識別實名認證,然后點選首頁“防疫報備”模塊,閱讀報備類型后點擊“立即報備”,再選擇自身符合的報備類型并如實填寫個人情況,提交后即報備成功。
          據悉,為統籌疫情防控和服務企業群眾辦事,市政務服務和大數據管理局充分發揮大數據優勢,通過整合更多服務資源、打通更多政務數據,在“焦我辦”APP推出了市政務服務大廳預約叫號、一鍵挪車、居住證快速核發、契稅繳納全流程網辦、青年人才落戶補貼申報等一系列功能,實現了“讓數據多跑路、讓群眾少跑腿”,減少了疫情防控期間的人員接觸,有效助力我市疫情防控。

          焦我辦app登錄幫助

          1、收不到驗證碼?
          由于各運營商網絡環境的問題,可能會造成延遲發送,因此請耐心等待即可,無需多次點擊獲取哦!如3分鐘內未收到短信驗證碼,可通過意見反饋聯系我們。
          2、獲取驗證碼時,提示“驗證碼次數已到上限”
          點擊一次驗證碼時,由于各運營商網絡環境的問題可能會造成延遲,而實際已發送多次驗證碼!如確實多次點擊已達上限的,可以聯系我們重置發送次數。
          3、密碼提示規則不符?
          目前賬號密碼長度需在8-16位,且必須包含數字、大寫字母、小寫字母、常用符號中的三個條件。
          4、賬號密碼忘記了怎么辦?
          您可以點擊登錄頁面中的“忘記密碼”,根據您的實際情況選擇找回密碼的方式進行找回。
          5、忘記手勢密碼如何找回?
          您可在登錄界面需輸入手勢密碼的下方,點擊“重新登錄”通過賬號密碼登錄即可,登錄成功后,可直接重新設置新的手勢密碼/指紋密碼;如果不記得賬號密碼的話,也可通過登錄界面右下角的“忘記密碼”進行找回。

          轉載下載地址:http://www.32r.com/app/116700.html


          主站蜘蛛池模板: 卡通动漫中文字幕第一区| 亚洲欧美日韩一区二区三区在线| 国产精品一区二区av| 蜜臀AV免费一区二区三区| 国产精品视频一区二区三区不卡| 一区二区三区无码被窝影院| 日韩AV无码一区二区三区不卡毛片 | 无码国产伦一区二区三区视频| 国产一区二区成人| 福利一区二区三区视频在线观看 | 国产成人AV一区二区三区无码 | 好看的电影网站亚洲一区| 精品国产一区二区三区在线观看| 国产精品免费综合一区视频| 丝袜美腿一区二区三区| 国产精品综合AV一区二区国产馆| 精品一区二区三区波多野结衣 | 成人日韩熟女高清视频一区| 一区二区三区电影网| 国产在线一区二区杨幂| 国产精品成人一区无码| 国产MD视频一区二区三区| 精彩视频一区二区| 精品一区二区三区中文字幕| 久久亚洲色一区二区三区| www亚洲精品少妇裸乳一区二区 | 亚洲日韩一区二区一无码| 精品国产福利一区二区| 精品熟人妻一区二区三区四区不卡| 亚洲一区中文字幕久久| 国产精品夜色一区二区三区 | 一区二区三区日韩精品| 精品无码成人片一区二区98| 精品国产伦一区二区三区在线观看 | 亚洲av无码成人影院一区| 在线视频亚洲一区| 奇米精品一区二区三区在| 色妞色视频一区二区三区四区| 亚洲一区二区无码偷拍| 动漫精品一区二区三区3d| 99久久精品国产免看国产一区|