亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

一鍵下載:將知乎專欄導(dǎo)出成電子書

ivyzhang / 1772人閱讀

摘要:在知乎上,你一定關(guān)注了一些不錯(cuò)的專欄比如的編程教室。有需要的請(qǐng)?jiān)诠娞?hào)里回復(fù)爬蟲實(shí)戰(zhàn)源碼下載獲取知乎專欄下載器源碼,請(qǐng)?jiān)诠娞?hào)的編程教室里回復(fù)關(guān)鍵字知乎除了代碼外,本專欄打包好的也一并奉上,歡迎閱讀與分享。

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

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

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

【最終效果】

運(yùn)行程序,輸入 專欄的 id ,也就是網(wǎng)頁地址上的路徑:

之后程序便會(huì)自動(dòng)抓取專欄中的文章,并按發(fā)布時(shí)間合并導(dǎo)出為 pdf 文件。

【實(shí)現(xiàn)思路】

這個(gè)程序主要分為三個(gè)部分:

抓取專欄文章地址 列表

抓取每一篇文章的 詳細(xì)內(nèi)容

導(dǎo)出 PDF

1. 抓取列表

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


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

觀察返回結(jié)果中發(fā)現(xiàn),通過 nextis_end 的值,我們能獲取下一次列表請(qǐng)求的地址(相當(dāng)于向下滾動(dòng)頁面的觸發(fā)效果)以及判斷是否已經(jīng)拿到所有文章。

data 中的 id、title、url 就是我們需要的數(shù)據(jù)。因?yàn)?url 可以通過 id拼出,所以我們的代碼里未保存它。

使用一個(gè) while 循環(huán),直到抓取完所有文章的 idtitle,保存在文件中。


while True:
    resp = requests.get(url, headers=headers)
    j = resp.json()
    data = j["data"]
    for article in data:
        # 保存id和title(略)
    if j["paging"]["is_end"]:
        break
    url = j["paging"]["next"]
    # 按 id 排序(略)
    # 導(dǎo)入文件(略)

2. 抓取文章

有了所有文章的 id / url,后面的抓取就很簡單了。文章主體內(nèi)容就在 Post-RichText 的標(biāo)簽中。

需要稍微花點(diǎn)功夫的是一些文本上的處理,比如原頁面的圖片效果,會(huì)加上 noscript標(biāo)簽和 `、highlight">


url = "https://zhuanlan.zhihu.com/p/" + id
html = requests.get(url, headers=headers).text
soup = BeautifulSoup(html, "lxml")
content = soup.find(class_="Post-RichText").prettify()
# 對(duì)content做處理(略)
with open(file_name, "w") as f:
    f.write(content)

到這一步,就已經(jīng)完成了所有內(nèi)容的抓取,可以在本地閱讀了。

3. 導(dǎo)出 PDF

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

wkhtmltopdf 是一個(gè) HTML 轉(zhuǎn) PDF 的工具,需要多帶帶安裝,具體可參考它的官網(wǎng)介紹。

https:// wkhtmltopdf.org/downloads.html

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

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


pip install pdfkit

使用起來很簡單:


# 獲取htmls文件名列表(略)
pdfkit.from_file(sorted(htmls), "zhihu.pdf")

這樣就完成了整個(gè)專欄導(dǎo)出。

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

關(guān)于這些爬蟲的開發(fā)技巧,都可以在我們的 爬蟲實(shí)戰(zhàn) 課程中學(xué)到。 有需要的請(qǐng)?jiān)诠娞?hào)里回復(fù) 爬蟲實(shí)戰(zhàn)

【源碼下載】

獲取知乎專欄下載器源碼,請(qǐng)?jiān)诠娞?hào)( Crossin的編程教室 )里回復(fù)關(guān)鍵字 知乎

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

════

其他文章及回答:

如何自學(xué)Python | 新手引導(dǎo) | 精選Python問答 | Python單詞表 | 人工智能 | 嘻哈 | 爬蟲 | 我用Python | 高考 | requests | AI平臺(tái)

歡迎搜索及關(guān)注: Crossin的編程教室

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42477.html

相關(guān)文章

  • 程序員的一些常用技能點(diǎn)

    摘要:其他筆記還有一些其他的主流云筆記軟件,像印象筆記,為知筆記,等,由于沒有多做嘗試,就不加以評(píng)價(jià)年最好用的云筆記軟件推薦介紹是一種可以使用普通文本編輯器編寫的標(biāo)記語言,通過簡單的標(biāo)記語法,它可以使普通文本內(nèi)容具有一定的格式。 目錄: [TOC] Git Git介紹: Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒有之一),簡單來說,Git 是一個(gè)管理你的「代碼的歷史記錄」的工具。 Gi...

    baishancloud 評(píng)論0 收藏0
  • 2017-06-24 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選帶來的困惑知乎專欄推送技術(shù)之難,真的遠(yuǎn)超我們想象奇舞周刊第期深度學(xué)習(xí)助力前端開發(fā)中的回調(diào)眾成翻譯薦官方譯文和框架源碼版掘金中文筆記事件委托即事件代理知識(shí)點(diǎn)第期掌握緩存從請(qǐng)求到響應(yīng)過程的一切下譯行代碼擼一個(gè)陰陽八卦 2017-06-24 前端日?qǐng)?bào) 精選 This 帶來的困惑 - 知乎專欄HTTP/2推送技術(shù)之難,真的遠(yuǎn)超我們想象奇舞周刊第215期:深度學(xué)習(xí)助力前端開發(fā)Java...

    Anshiii 評(píng)論0 收藏0
  • 2017-07-05 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選你可能不知道的前端知識(shí)點(diǎn)譯在服務(wù)端渲染的實(shí)現(xiàn)掘金小前端創(chuàng)建或文件并瀏覽器導(dǎo)出下載張?chǎng)涡聆慰臻g鑫生活代理服務(wù)器淺析知乎專欄快速打造簡易高效的配置掘金中文譯組件解耦之道楓上霧棋的日志第期什么樣的工程師才能算老司機(jī) 2017-07-05 前端日?qǐng)?bào) 精選 你可能不知道的前端知識(shí)點(diǎn)[譯] React 在服務(wù)端渲染的實(shí)現(xiàn) - 掘金小tip:JS前端創(chuàng)建html或json文件并瀏覽器導(dǎo)出...

    ISherry 評(píng)論0 收藏0
  • 簡單三步,用 Python 發(fā)郵件

    摘要:使用腳本發(fā)送郵件并不復(fù)雜。以下為思路導(dǎo)圖模塊與發(fā)送郵件相關(guān)的模塊是關(guān)于簡單郵件傳輸協(xié)議的操作模塊,在發(fā)送郵件的過程中起到服務(wù)器之間互相通信的作用。 0. 前言 發(fā)送電子郵件是個(gè)很常見的開發(fā)需求。比如你寫了個(gè)監(jiān)控天氣的腳本,發(fā)現(xiàn)第二天要下雨,或者網(wǎng)站上關(guān)注的某個(gè)商品降價(jià)了,就可以發(fā)個(gè)郵件到郵箱來提醒自己。 使用 Python 腳本發(fā)送郵件并不復(fù)雜。不過由于各家郵件的發(fā)送機(jī)制和安全策略不同...

    haobowd 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<