日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 知乎 合并 pdf_一键下载:将知乎专栏导出成电子书

發布時間:2024/8/23 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 知乎 合并 pdf_一键下载:将知乎专栏导出成电子书 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:一鍵下載:將知乎專欄導出成電子書

老是有同學問,學了 Python 基礎后不知道可以做點什么來提高。今天就再用個小例子,給大家講講,通過 Python和爬蟲,可以完成怎樣的小工具。

在知乎上,你一定關注了一些不錯的專欄(比如 Crossin的編程教室)。但萬一有那么一天,你喜歡的答主在網上被人噴了,一怒之下刪帖停更,這些好內容可就都看不到了。盡管這是小概率事件(可也不是沒發生過),但未雨綢繆,你可以把關注的專欄導出成電子書,這樣既可以離線閱讀,又不怕意外刪帖了。

只是需要工具和源碼的可以拉到文章底部獲取代碼。

【最終效果】

運行程序,輸入專欄的 id,也就是網頁地址上的路徑:

之后程序便會自動抓取專欄中的文章,并按發布時間合并導出為 pdf文件。

【實現思路】

這個程序主要分為三個部分:

抓取專欄文章地址列表

抓取每一篇文章的詳細內容

導出 PDF1. 抓取列表

在之前的文章 爬蟲必備工具,掌握它就解決了一半的問題 中介紹過如何分析一個網頁上的請求。按照其中的方法,我們可以通過開發者工具的 Network 功能找出專欄頁面獲取詳細列表的請求:

https://www.zhihu.com/api/v4/columns/crossin/articles

觀察返回結果中發現,通過 next 和 is_end 的值,我們能獲取下一次列表請求的地址(相當于向下滾動頁面的觸發效果)以及判斷是否已經拿到所有文章。

而 data 中的 id、title、url 就是我們需要的數據。因為 url 可以通過 id 拼出,所以我們的代碼里未保存它。

使用一個 while 循環,直到抓取完所有文章的 id 和 title,保存在文件中。

whileTrue: resp = requests.get(url, headers=headers) j = resp.json() data = j[ 'data']

forarticle indata:

# 保存id和title(略)ifj[ 'paging'][ 'is_end']:

breakurl = j[ 'paging'][ 'next']

# 按 id 排序(略)

# 導入文件(略)

2. 抓取文章

有了所有文章的 id / url,后面的抓取就很簡單了。文章主體內容就在 Post-RichText 的標簽中。

需要稍微花點功夫的是一些文本上的處理,比如原頁面的圖片效果,會加上 no 標簽和 data-actual、src="data:image 這樣的屬性,我們為了正常顯示得把它們去掉。

url = 'https://zhuanlan.zhihu.com/p/'+ idhtml = requests.get(url, headers=headers).textsoup = BeautifulSoup(html, 'lxml')content = soup.find(class_= 'Post-RichText').prettify()

# 對content做處理(略)

withopen(file_name, 'w') asf: f.write(content)

到這一步,就已經完成了所有內容的抓取,可以在本地閱讀了。

3. 導出 PDF

為了更便于閱讀,我們使用 wkhtmltopdf+ pdfkit,將這些 HTML 文件打包成 PDF。

wkhtmltopdf 是一個 HTML 轉 PDF 的工具,需要單獨安裝,具體可參考它的官網介紹。

https://wkhtmltopdf.org/downloads.html

https://github.com/JazzCore/python-pdfkit/wiki/Installing-wkhtmltopdf

pdfkit 是對此工具封裝的 Python 庫,可從 pip 安裝:

pip install pdfkit

使用起來很簡單:

# 獲取htmls文件名列表(略)

pdfkit.from_file(sorted(htmls), 'zhihu.pdf')

這樣就完成了整個專欄導出。

不僅是知乎專欄,幾乎大多數信息類網站,都是通過 1.抓取列表2.抓取詳細內容這兩個步驟來采集數據。因此這個代碼稍加修改,即可用在很多別的網站上。只不過有些網站需登錄后訪問,那么就需要對 headers里的 cookie信息進行設置。此外,不同網站的請求接口、參數、限制都不盡相同,所以還是要具體問題具體分析。

關于這些爬蟲的開發技巧,都可以在我們的爬蟲實戰課程中學到。有需要的請在公眾號里回復 爬蟲實戰

【源碼下載】

獲取知乎專欄下載器源碼,請在公眾號(Crossin的編程教室)里回復關鍵字 知乎

除了代碼外,本專欄打包好的 PDF也一并奉上,歡迎閱讀與分享。

crossincode.com返回搜狐,查看更多

責任編輯:

總結

以上是生活随笔為你收集整理的python 知乎 合并 pdf_一键下载:将知乎专栏导出成电子书的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。