天天看點

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

本文授權轉載自:小癡印記

不知道你有沒有這樣的經曆。

偶然間,關注了一個自己特别感興趣的公衆号,感覺就像是挖到了一個寶藏。于是,我們就想翻一翻寶藏裡都有什麼。

但是,如果你想看到寶藏最開始的内容,你不得不翻山越嶺,刷到公衆号的曆史起點。這還不算什麼,等你下次想要接着看下一篇時,不得不重蹈覆轍。

那麼,我們有什麼辦法解決一下這個問題呢?

用萬能的python寫個腳本,我們就可以把公衆号曆史所有的文章批量的儲存為本地的PDF,這樣,就可以根據标題和日期來看自己喜歡的文章啦!

核心内容:

1 抓包工具Fiddler的配置及其使用

2 python擷取公衆号全部曆史文章url位址

3 把url轉化為PDF

4 擷取單個文章的方法

1 抓包工具Fiddler的配置及使用

1)工作原理

用戶端和伺服器之間建立一個代理伺服器,監聽本機發出的請求和伺服器傳回的響應結果。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

浏覽器與伺服器之間通過建立TCP連接配接以HTTP協定進行通信,浏覽器預設通過自己發送HTTP請求到伺服器。

而Fiddler是c#開發(微軟出品,主要作者Eric Lawrence)的http代理伺服器,fiddler工作于七層中的應用層,能夠捕獲到通過的http(s)請求。

2)下載下傳位址

這是官網:http://www.telerik.com/fiddler

你也可以在公衆号【小癡印記】背景,回複關鍵字“Fiddler抓包”直接擷取。

3)配置https

預設情況下,Fiddler是不會捕獲HTTPS會話的,初次使用時,需要下載下傳安全證書,并配置。

具體步驟:

依次點選“Tools-Options-Https”,進行如下圖的配置,“Actions-Trust root”是下載下傳安全證書的。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

4)設定區域網路ip和端口号

Fiddler的運作機制其實就是本機上監聽 8888 端口的 HTTP 代理。

Fiddler 啟動的時候預設 IE 的代理設為了127.0.0.1:8888,而其他浏覽器是需要手動設定的,是以将 Chrome 浏覽器的代理改為127.0.0.1:8888 就可以監聽資料了。

具體操作步驟,見第一篇參考文章:

https://blog.csdn.net/jingjingshizhu/article/details/80566191

注意:運作爬蟲程式時,要關閉Fidder用戶端

2 python源碼分析

1)打開微信用戶端,

點開某一個公衆号的曆史文章界面

以我的公衆号為例,如圖。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

2)打開Fiddler,監聽url

通過對比,前後兩個url,可以發現,隻是offset這個參數有所改變。

一些重要的關鍵字段:

__biz : 使用者和公衆号之間的唯一id

uin :使用者的私密id

key :請求的秘鑰,一段時候隻會就會失效

offset :偏移量

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!
我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

圖的右下角,我們可以看到傳回的資料類型,及其格式。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

好啦,接下來,我們可以擷取一頁内容看看啦。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

看看,reponse_dict的内容。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

根據上圖的json字元串,我們要做的是把title、content_url、datetime提取出來。

見下圖。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

至此,我們成功的擷取到了标題、時間、内容url等資訊。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

隻有在最後一篇文章時,can_msg_continue=0,其餘所有文章都是1。

是以,擷取公衆号曆史文章全部内容,可以加一個死循環,當判斷為最後一篇文章時,直接break,結束循環。

完整代碼:

關注【小癡印記】公衆号,背景回複“公衆号曆史文章”

3 把url轉化為pdf

用到了python第三方庫pdfkit,重點在安裝。

1)安裝pdfkit

pip install pdfkit

2)安裝wkhtmltopdf

1.下載下傳位址:

https://wkhtmltopdf.org/downloads.html,安裝到本地即可。

2.将按照目錄下的bin添加到環境變量的path中;

3)重新開機電腦,重新開機電腦,重新開機電腦。

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

最終結果:

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

4 擷取單個文章的其他途徑

1)在網頁上,打開對應的文章,注意,一定要把文章加載到底部(待圖檔顯示完全)

2)我用的谷歌浏覽器,列印-ctrl+p,另存為pdf

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

結果如下圖:

我是怎麼儲存公衆号曆史文章合集到本地的?當然是用python了!

5 文章小結

本文主要介紹了,使用python擷取你喜歡的公衆号的曆史文章,并儲存到本地PDF檔案。

其中,用到了Fiddler抓包工具,首先獲得所有文章内容的url位址,然後可把url轉為PDF檔案,不過,此方法儲存的檔案,圖檔不能很好的顯示。

是以,如果你隻是想列印一篇文章,那麼,我建議你可在浏覽器端打開指定一篇文章,另存為PDF檔案。

回複關鍵字“Fiddler抓包”,擷取“抓包工具”

回複關鍵字“公衆号曆史文章”,擷取“完整源代碼”

推薦閱讀:(點選下方标題即可跳轉)

暑期實習的那 5 周,我收獲了些什麼?

GitHub 标星 8w!學完這份指南後,你就可以去 Google 面試了!