python将html存为pdf_用Python将HTML转为PDF。
上期提到了如何獲取公眾號文章信息,這回就說下怎么將網頁轉為PDF,方便日常學習。html
而后擴散一下以前一個比賽的結果(華章計算機抖音大賽)。數據庫
順便談談本身對從此送書的一個想法。微信
另外以前的送書活動,有中獎的讀者沒有聯系我,因此這回一并送出。app
明天還會送兩本書,你們也能夠關注一下。ide
/ 01 / HTML轉PDF學習
主要用到的庫有pdfkit及wkhtmltopdf。url
安裝我就不說了,網上也是一堆教程,經過下面的代碼也能略知一二。spa
須要注意的點就是,把網頁轉PDF的時候,須要將網頁的圖片下載下來,保存在本地。orm
而后生成網頁時調用本地的圖片,這樣就不會出如今PDF中圖片缺失的狀況。htm
本次沒有去設置詳細的PDF參數,因此生成的PDF排版并非很友好,不過仍是能湊合看的。
具體轉換代碼以下。
import?pandas?as?pd
import?requests
import?pdfkit
import?os
import?re
#?讀取數據并清洗
df?=?pd.read_csv('article.csv',?header=None,?names=['title',?'digest',?'article_url',?'date'],?encoding='gbk')
df['date']?=?pd.to_datetime(df.date.values,?unit='s',?utc=True).tz_convert('Asia/Shanghai')
df_date?=?df['date'].astype(str).str.split('?',?expand=True)
df['day']?=?df_date[0]
#?獲取目錄的絕對路徑
fileDir?=?os.path.abspath(os.path.dirname('F:\\article_pdf'))
headers?=?{
"User-Agent":?"Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/39.0.2171.95?Safari/537.36?MicroMessenger/6.5.2.501?NetType/WIFI?WindowsWechat?QBCore/3.43.901.400?QQBrowser/9.0.2524.400",
}
proxies?=?{
"https":?None,
"http":?None,
}
#?設置轉PDF參數
options?=?{
"page-size":?"Letter",
"encoding":?"UTF-8",
"custom-header":?[
("Accept-Encoding",?"gzip")
]
}
#?調用wkhtmltopdf
#?confg?=?pdfkit.configuration(wkhtmltopdf=r"C:\Users\Administrator\wkhtmltox-0.12.5-1.mxe-cross-win64\wkhtmltox\bin\wkhtmltopdf.exe")
for?title,?url,?date?in?zip(df['title'],?df['article_url'],?df['day']):
print(title,?url,?date)
#?替換特殊符號
title?=?re.sub('[\/::*?"<>|]',?'',?title)
title?=?title.replace('\\',?'_')
#?html文件名
html_name?=?'{}/{}.html'.format('F:\\article_pdf',?date?+?'_'?+?title)
res?=?requests.get(url,?headers=headers,?proxies=proxies,?timeout=3)
html?=?res.text
#?用?來控制正則貪婪和非貪婪匹配;(.*?)?小括號來控制是否包含匹配的關鍵字
pattern?=?re.compile(r'data-src=\"http.*?\"')
result?=?pattern.findall(html)
picCnt?=?0
for?i?in?result:
picCnt?=?picCnt?+?1
url?=?re.findall(r'\"(.*?)\"',?i)[0]
#?圖片名
picture_name?=?'{}/{}.png'.format('F:\\article_pdf',?str(picCnt))
#?調用本地圖片
html?=?html.replace(url,?picture_name)
#?獲取圖片內容
r?=?requests.get(url)
with?open(picture_name,?"wb+")?as?f:
f.write(r.content)
#?保存html文件
html?=?html.replace('data-src',?'src')
fd?=?open(html_name,?'w',?encoding="utf-8")
fd.write(html)
fd.close()
pdf_name?=?'{}/{}.pdf'.format('F:\\article_pdf',?date?+?'_'?+?title)
try:
#?html轉pdf
pdfkit.from_file(html_name,?pdf_name,?options=options)
except:
pass
最后成功生成全部文章的PDF。
這里不知是為什么,生成PDF的時間挺長的,平均一個PDF耗時三分鐘。
/ 02 / 比賽結果
以前公眾號對華章計算機抖音大賽進行了推廣,在上個禮拜比賽的結果也出來了。
這里幫出版社擴散一下比賽結果。
華章計算機抖音大賽比賽結果
固然我也參加了,并且也獲獎了,不過是參與獎,四本書。
活動參與的人并很少,一共應該就只有8我的參賽。
講道理,900元現金以及30本書,這么豐厚的獎品,活動卻沒多少人參加,這值得沉思。
固然還會有第二屆,屆時我還會幫忙宣傳,這回沒有參加的小伙伴,下回必定要抓住機會。
為何我會繼續支持呢?這應該源于我以前參加的一個PPT比賽。
至今,我還留存著參與活動后的那本贈書。
書很不錯,我也從中學到了很多東西。
固然最重要的是動手就有收獲的道理。
種一棵樹最好的時間是十年前,其次是如今。因此行動起來,絕對沒錯。
從此的送書活動,若是條件容許的話,也將會以一些小比賽的形式送出,敬請期待。
/ 03 /? 送書
下面應該是上個禮拜的截圖了,姑且就以此做為參照。
以上的讀者,若是對下面這本書有興趣的話。
能夠微信聯系我,先到先得,就一本。
微信聯系方式能夠在公眾號菜單欄里找到。
一本有關Oracle數據庫的書。
明天送的兩本是有關Python數據分析的書,能夠關注一下。
/ 04 / 總結
兩期的文章代碼已上傳「GitHub」。
點擊左下角閱讀原文,便可獲取。
萬水千山老是情,點個「在看」行不行。
總結
以上是生活随笔為你收集整理的python将html存为pdf_用Python将HTML转为PDF。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 龙之国物语如何点赞(龙是否真的存在过)
- 下一篇: python dict初始化大小_在Py