這些年我在公眾號(hào)寫(xiě)了不少原創(chuàng)文章,突然有個(gè)想法,能不能把我的原創(chuàng)文章都采集下來(lái),然后分好類,制作成一本妥妥的電子書(shū),然后賣(mài)給你們。。。 哦,不!直接送給你們,用老羅的話來(lái)說(shuō)就是:
我覺(jué)得這事有意義,可以干! 可是,怎么干呢? 理一下思路:
嗯嗯,可以。 如何采集原創(chuàng)文章在電腦打開(kāi)微信客戶端,打開(kāi) Fiddler,開(kāi)啟抓包,然后在微信瀏覽器中打開(kāi)公眾號(hào)的歷史原創(chuàng)文章: 這時(shí)候就可以看到請(qǐng)求這個(gè)頁(yè)面的鏈接: 點(diǎn)進(jìn)去可以看到各種請(qǐng)求的參數(shù): 以及返回的 JSON 數(shù)據(jù): 把它復(fù)制出來(lái)格式化一波: 通過(guò)一頓分析,可以發(fā)現(xiàn)在返回的 JSON 中:
再使用 Fiddler 模擬請(qǐng)求一下,發(fā)現(xiàn)數(shù)據(jù)正常返回: 那么接下來(lái)只要用 Python 構(gòu)造一下請(qǐng)求所需要的 Cookie 等參數(shù)不就可以獲取了么: 有了請(qǐng)求相關(guān)的參數(shù),就可以獲取了。 我們通過(guò) get 請(qǐng)求就可以得到返回的 Json 信息,然后把它們解析出來(lái),拿到自己想要的標(biāo)題和鏈接,接著存到 csv 里去: 這里通過(guò)判斷 can_msg_continue ,如果下一頁(yè)有數(shù)據(jù),就繼續(xù)獲取,直到?jīng)]有為止。 執(zhí)行一波: 很快,我要的數(shù)據(jù)就有了: 把鏈接分好類我分享的文章中有不同的類型,比如有關(guān)于我的一些觀點(diǎn)類的,有資源分享的,有技術(shù)教程的,有技巧的等等。 我希望每個(gè)類別可以形成一個(gè)章節(jié),那我就只能通過(guò)標(biāo)題,給它們打上 tag : 然后在 Python 中通過(guò) with open 把數(shù)據(jù)讀取出來(lái)重新排好序,放到 list 里面去: 把公眾號(hào)生成 PDF 電子書(shū)有了鏈接列表,可以使用 pdfkit 的 from_url 方法,將它們生成 pdf ,但這樣直接去使用會(huì)有問(wèn)題。 一來(lái)是公眾號(hào)圖片做了懶加載和防盜鏈,像這樣: 二來(lái)是現(xiàn)在抓取到文章的鏈接里面有很多不必要的東西,直接使用 pdfkit.from_url 會(huì)報(bào)錯(cuò),特別是你列表鏈接很多的時(shí)候: 那咋辦呢? 理一下思路:
這里在生成 pdf 可以傳入 options 和 toc 參數(shù),用來(lái)做一些生成 pdf 的配置,比如生成電子書(shū)的目錄 toc,可以引用 xsl: 在這里面就可以定義自己想要的樣式,比如我可以判斷如果標(biāo)題含有 Chapter,我就給目錄加個(gè)背景顏色: 至此,整個(gè)流程就搞完了,運(yùn)行起來(lái)就可以生成一本電子書(shū)。 接下來(lái),前方高能預(yù)警: 光目錄就 16 頁(yè),整本書(shū) 1900+ 頁(yè),蹲再多次馬桶也夠看了。 你覺(jué)得這本書(shū)值多少錢(qián)?反正我就是想送給你,交個(gè)朋友。 進(jìn)入公眾號(hào),發(fā)送 「帥書(shū)」,直接拿下。 希望對(duì)你有幫助,那么我們下回見(jiàn),peace! |
|