本文授權(quán)轉(zhuǎn)載自:小癡印記 偶然間,關(guān)注了一個(gè)自己特別感興趣的公眾號(hào),感覺(jué)就像是挖到了一個(gè)寶藏。于是,我們就想翻一翻寶藏里都有什么。 但是,如果你想看到寶藏最開(kāi)始的內(nèi)容,你不得不翻山越嶺,刷到公眾號(hào)的歷史起點(diǎn)。這還不算什么,等你下次想要接著看下一篇時(shí),不得不重蹈覆轍。
那么,我們有什么辦法解決一下這個(gè)問(wèn)題呢? 用萬(wàn)能的python寫(xiě)個(gè)腳本,我們就可以把公眾號(hào)歷史所有的文章批量的保存為本地的PDF,這樣,就可以根據(jù)標(biāo)題和日期來(lái)看自己喜歡的文章啦! 核心內(nèi)容: 1 抓包工具Fiddler的配置及其使用 2 python獲取公眾號(hào)全部歷史文章url地址 3 把url轉(zhuǎn)化為PDF 4 獲取單個(gè)文章的方法 客戶端和服務(wù)器之間建立一個(gè)代理服務(wù)器,監(jiān)聽(tīng)本機(jī)發(fā)出的請(qǐng)求和服務(wù)器返回的響應(yīng)結(jié)果。瀏覽器與服務(wù)器之間通過(guò)建立TCP連接以HTTP協(xié)議進(jìn)行通信,瀏覽器默認(rèn)通過(guò)自己發(fā)送HTTP請(qǐng)求到服務(wù)器。 而Fiddler是c#開(kāi)發(fā)(微軟出品,主要作者Eric Lawrence)的http代理服務(wù)器,fiddler工作于七層中的應(yīng)用層,能夠捕獲到通過(guò)的http(s)請(qǐng)求。這是官網(wǎng):http://www./fiddler你也可以在公眾號(hào)【小癡印記】后臺(tái),回復(fù)關(guān)鍵字“Fiddler抓包”直接獲取。默認(rèn)情況下,F(xiàn)iddler是不會(huì)捕獲HTTPS會(huì)話的,初次使用時(shí),需要下載安全證書(shū),并配置。依次點(diǎn)擊“Tools-Options-Https”,進(jìn)行如下圖的配置,“Actions-Trust root”是下載安全證書(shū)的。4)設(shè)置局域網(wǎng)ip和端口號(hào)Fiddler的運(yùn)行機(jī)制其實(shí)就是本機(jī)上監(jiān)聽(tīng) 8888 端口的 HTTP 代理。Fiddler 啟動(dòng)的時(shí)候默認(rèn) IE 的代理設(shè)為了127.0.0.1:8888,而其他瀏覽器是需要手動(dòng)設(shè)置的,所以將 Chrome 瀏覽器的代理改為127.0.0.1:8888 就可以監(jiān)聽(tīng)數(shù)據(jù)了。https://blog.csdn.net/jingjingshizhu/article/details/80566191 注意:運(yùn)行爬蟲(chóng)程序時(shí),要關(guān)閉Fidder客戶端點(diǎn)開(kāi)某一個(gè)公眾號(hào)的歷史文章界面 2)打開(kāi)Fiddler,監(jiān)聽(tīng)url通過(guò)對(duì)比,前后兩個(gè)url,可以發(fā)現(xiàn),只是offset這個(gè)參數(shù)有所改變。 __biz : 用戶和公眾號(hào)之間的唯一id key :請(qǐng)求的秘鑰,一段時(shí)候只會(huì)就會(huì)失效圖的右下角,我們可以看到返回的數(shù)據(jù)類(lèi)型,及其格式。 好啦,接下來(lái),我們可以獲取一頁(yè)內(nèi)容看看啦。根據(jù)上圖的json字符串,我們要做的是把title、content_url、datetime提取出來(lái)。至此,我們成功的獲取到了標(biāo)題、時(shí)間、內(nèi)容url等信息。只有在最后一篇文章時(shí),can_msg_continue=0,其余所有文章都是1。因此,獲取公眾號(hào)歷史文章全部?jī)?nèi)容,可以加一個(gè)死循環(huán),當(dāng)判斷為最后一篇文章時(shí),直接break,結(jié)束循環(huán)。
|