<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們有時候看到一篇好的文章,想去儲存下來,傳統方式一般是收藏書籤、複製貼上到檔案或者直接複製連結儲存,但這樣一次兩次還好,數量多了,比較麻煩不說,還可能不好找~
這個時候,Python的作用就來了,直接抓下來匯出為PDF,直接把整個網站的內容都導下來都行~
話不多說,我們直接上程式碼!
import requests import parsel import pdfkit import os import re html_str = """ <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> {article} </body> </html> """ def change_title(title): """ 替換標題中的特殊字元 :param title: 傳入文章標題 :return: 返回一個替換掉特殊字元的標題 """ """ 使用re.compile()將正規表示式的字串形式編譯為一個物件,通過該物件提供的一些列方法對文字 進行匹配查詢 re.sub() 第一個引數對應的正規表示式,第二個引數為要替換成的字串, 第三個引數為源字串 """ pattern = re.compile(r"[/\:*?"<>|]") # '/ : * ? " < > |' new_title = re.sub(pattern, "_", title) # 替換為下劃線 return new_title for page in range(1, 11): """ 傳送請求的url地址,唯一資源定位符 headers: 請求頭 把python偽裝成瀏覽器對伺服器傳送請求, 然後伺服器會給我們返回一個響應資料 請求頭所加的引數都是可以在開發者工具中的headers裡面的request headers中找到的 比如 user-agent:代表著瀏覽器的資訊 cookies:使用者的資訊 常用於檢測是否有登陸賬號 host:域名 referer:常說的防盜鏈,告訴伺服器是從哪個網頁跳轉過來的 請求方式:可以通過開發者工具中headers裡面的資料看到是什麼樣的請求方式 get請求: 是可以直接從伺服器上面獲取資料 post請求:需要向伺服器傳送一個資料 比如說(搜尋/登陸) response:響應物件 狀態碼: 200表示請求成功 300:重定向 跳轉 400:通常是url網址不對 500 一般是伺服器問題 獲取網頁文字資料 response.text 獲取網頁json字典資料 response.json() 獲取網頁二進位制資料 response.content """ url = 'https://****/qdPython/article/list/{page}' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' } response = requests.get(url=url, headers=headers) """ url裡面的****替換為blog.csdn.net即可 把 html 字串資料轉換成一個 Selector 物件 Selector 就具有一系列資料解析的方法 css/xpath/re 類選擇器 都是使用圓點.開頭 ID選擇器 是使用#開頭 屬性選擇器: ::text獲取標籤裡面的文字資料 ::attr(xxx) 獲取標籤內某一個屬性的資料 get() 從 Selector 物件中提取第一個資料, 直接返回字串資料給我們 getall() 從 Selector 物件中提取提取所有資料, 返回一個列表 """ selector = parsel.Selector(response.text) href = selector.css('.article-list div.article-item-box a::attr(href)').getall() for link in href: response_1 = requests.get(url=link, headers=headers) selector_1 = parsel.Selector(response_1.text) title = selector_1.css('#articleContentId::text').get() content = selector_1.css('#content_views').get() new_title = change_title(title) # 建立檔案儲存地址以及儲存檔案的名字 和格式 pdf_path = 'pdf\' + new_title + '.pdf' html_path = 'pdf\' + new_title + '.html' # str.format() 字串格式化方法 html = html_str.format(article=content) """ with open 開啟檔案時, 當檔案物件參照完畢之後會自動關閉檔案 html_path:檔案儲存路徑以及名字格式 mode:儲存方式 w 寫入 如果你不寫mode預設是r 讀 encoding: 編碼 as f 重新命名 可以自定義 f = open() f.writer() f.close() """ with open(html_path, mode='w', encoding='utf-8') as f: f.write(html) print('正在儲存:', title) # exe 檔案存放的路徑 config = pdfkit.configuration(wkhtmltopdf='C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe') # 把 html 通過 pdfkit 變成 pdf 檔案 pdfkit.from_file(html_path, pdf_path, configuration=config) os.remove(html_path)
兄弟們快去試試吧!
到此這篇關於基於Python實現網頁文章轉PDF檔案的文章就介紹到這了,更多相關Python網頁文章轉PDF內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45