一步步教你打造微信公眾號文章爬蟲(1)-綜述

本系列我將與大家一起學(xué)習(xí)批量下載任意公眾號所有歷史文章坝初。

爭取講明白俺榆,源代碼也會隨著教程逐步放出來赞枕,但是不喜歡伸手黨和不過如此黨(凡事都說雖然我不會但我覺得不難的人)垮斯。

用戶需要有一定的基礎(chǔ):

知道百度這個神奇的網(wǎng)站刻获,而且知道是免費的蜀涨。

遇到問題先自行嘗試解決,不要張口就問蝎毡。

有html基礎(chǔ)(可去?http://www.runoob.com?學(xué)習(xí))厚柳。

有python基礎(chǔ),會用pip安裝第三方庫(強烈建議新手去http://www.liaoxuefeng.com?看免費版教程沐兵,里面也包含了如何在電腦上安裝配置python)

會用chrome的開發(fā)者工具别垮。

會了第1、2條扎谎,則第3碳想、4條應(yīng)該可以搞定。第5條在本文會講到基礎(chǔ)用法毁靶。

先請由本人扮演的政委講兩句:

先說點成果給大家點信心:本人2年前就已經(jīng)用python完整實現(xiàn)了批量下載任意公眾號歷史文章的功能移袍,1年前又用C#重寫了整個功能,做出了界面漂亮的軟件老充。為了避免讓小白誤以為本教程的終極目標是做一個圖形化的軟件我就不貼圖了葡盗。本教程是用python代碼實現(xiàn)批量下載功能,沒有圖形界面啡浊。重要的是讓大家體會到整個過程中的思路觅够,這樣將來你想保存其他任何網(wǎng)站都不再是難事。

本人非計算機科班出身巷嚣,在第一遍開發(fā)這套軟件的過程中走了許多彎路喘先,踩了許多坑,雖然現(xiàn)在依然是個小白廷粒,但至少可以為大家理出一條稍好走的路窘拯。為方便大家理解和操作,有的地方會采用麻煩點但好理解的方案坝茎。

本教程的目的是讓有一定編程基礎(chǔ)涤姊,想自己寫個爬蟲,但是不知從何下手嗤放,或者多次嘗試過但多次卡殼的朋友能快速搭建出一個完整的系統(tǒng)思喊。

我將盡量接地氣、以最簡潔的形式實現(xiàn)所有功能次酌,所以恨课,不要擔(dān)心完不成舆乔,多一點堅持,多給自己打打氣剂公。

下面請由本人扮演的老兵給參加本次特訓(xùn)營的朋友們開始講解:

公眾號文章不管是在PC端還是手機端還是瀏覽器中希俩,其實都是以網(wǎng)頁的形式呈現(xiàn)的,而保存電腦上的網(wǎng)頁版最為方便纲辽。

工欲擅其事必先利其器颜武,為照顧大多數(shù)人能聽懂下面可能有點啰嗦,但不難文兑,而且學(xué)會了對以后大有幫助盒刚。

想下載網(wǎng)頁就要先研究網(wǎng)頁,它是由什么組成的绿贞?從哪里來的因块?

在chrome(QQ瀏覽器、360瀏覽器中應(yīng)該有類似選項籍铁,但不推薦用IE)中打開任意一篇公眾號文章涡上。

按F12鍵,或者在網(wǎng)頁上右鍵->"檢查"拒名,將打開如下圖所示的一個窗口吩愧,這個窗口的最左上角文字是"DevTools"直譯為"開發(fā)者工具",下面會經(jīng)常提到增显。有的電腦上可能是將網(wǎng)頁窗口一分為二雁佳,下半部分彈出這個開發(fā)者工具窗口。顯示方式的不同可以通過點下圖中右上角的三個點切換同云,讀者視自己的電腦屏幕大小適當(dāng)選擇即可糖权。

再看上圖的第一行有許多標簽,我們需要用到"Elements"炸站,"Network"兩個標簽星澳。

先點"Elements",會看到許多有層次的格式化過的代碼旱易,這其實就是網(wǎng)頁的html元素結(jié)構(gòu)禁偎。先點擊下圖紅框所示的小圖標,然后將鼠標移動到文章的正文段落處阀坏,發(fā)現(xiàn)文字自動被選中一塊如暖,同時右側(cè)會有一段與之對應(yīng)的代碼也會變背景色。通過這種方式將源代碼與最終呈現(xiàn)的內(nèi)容一一對應(yīng)起來全释,這也是網(wǎng)頁編輯人員在調(diào)試時經(jīng)常用到的方法装处。

來點有趣的,雙擊右側(cè)源代碼中的"一周前"浸船,然后將其修改為 "1986-01-01"妄迁,回車,看看日期那里是不是也變了李命?其實許多裝X的網(wǎng)頁截圖都不需要用PS登淘,直接這樣改源代碼就可以了。

如果再刷新一下網(wǎng)頁封字,會發(fā)現(xiàn)剛才修改的內(nèi)容又回到原始狀態(tài)了黔州,因為我們剛才只是修改本地的內(nèi)容,而刷新是從微信的服務(wù)器上又重新獲取了原始網(wǎng)頁阔籽。否則流妻,如果我能這樣在銀行網(wǎng)站修改我的銀行存款就好了,哈哈笆制。

再回到開發(fā)者工具窗口绅这,點"Network"標簽,按F5刷新網(wǎng)頁(一定要先打開開發(fā)者工具再加載網(wǎng)頁它才能監(jiān)測到數(shù)據(jù)的加載)在辆,會看到下面飛快得列出許多內(nèi)容证薇。不知道是些啥玩意?其實這是一個網(wǎng)頁要正常顯示需要下載的所有文件(比如圖片匆篓,css樣式表浑度,js腳本等),一個看似簡單的網(wǎng)頁背后可能是由許多文件組成的(當(dāng)然也可以只有一個文件)鸦概,而我們要保存文章正是要把每一行所列出來的文件都保存下來箩张。

單擊第一行(一定是第一行),窗口將變成下圖窗市,在這個窗口的右半部分會列出當(dāng)前選中的這一行的詳細請求內(nèi)容先慷。

下圖紅框中有一排標簽欄,不要抓狂谨设,把這組標簽看完略枯燥的內(nèi)容就結(jié)束了^_^

先點 Preview 標簽熟掂,好像顯示了一個網(wǎng)頁,再點 Response 標簽扎拣,好像是一個網(wǎng)頁的源代碼赴肚?對的,Response是原始代碼二蓝,Preview是將代碼轉(zhuǎn)化成網(wǎng)頁誉券。

那么,原始代碼是怎么來的呢刊愚?點 Headers 標簽踊跟,看下圖,天吶,又是一堆英文商玫,不急不急箕憾,都是些常見單詞,而且這些代碼其實是分三大塊拳昌,分別為"General"袭异、"Response Headers"、"Request Headers"炬藤,(當(dāng)然有時候還會有更多塊)

謝天謝地御铃,只需要看這三大塊的名字就可以了,不需要看里面的內(nèi)容沈矿。而這些數(shù)據(jù)塊正是對應(yīng)著瀏覽器加載網(wǎng)頁的流程:

General包含要向微信服務(wù)器請求的基礎(chǔ)數(shù)據(jù)上真,比如請求的網(wǎng)址,請求的方式羹膳。

Request Headers中也是包含請求信息睡互,比如瀏覽器是手機版的還是電腦版的,當(dāng)前電腦環(huán)境是英文的還是中文的溜徙,有的需要會員登錄才能看的還會帶上會員信息(當(dāng)然是加密過的)

瀏覽器把這些請求數(shù)據(jù)準備好湃缎,一起發(fā)送給微信服務(wù)器。微信服務(wù)器收到之后會在后臺找到這篇文章蠢壹,并發(fā)回給瀏覽器嗓违。

瀏覽器會先檢查返回的 Response Headers,可以把它理解成返回的一本書的封皮图贸,上面會寫著你想請求的那篇文章是返回成功了還是失敗了蹂季,文章一共有多長,等等疏日。

那我想看的文章呢偿洁?就是你剛才看到的Response標簽里的那一堆代碼。瀏覽器會把它轉(zhuǎn)換為最終網(wǎng)頁的形式沟优。

我花了許多篇幅向大家介紹chrome開發(fā)者工具涕滋,是因為這是爬蟲開發(fā)必備技能,但它又不是只能為爬蟲開發(fā)者所用挠阁,希望大家能多多嘗試宾肺,反正怎么搞又搞不壞,其中有趣的技巧還有許多哦侵俗。

小結(jié):

學(xué)會使用chrome開發(fā)者工具分析和調(diào)試網(wǎng)頁锨用。

對網(wǎng)頁的加載流程有初步認識。

有所收獲又似懂非懂中對接下來的學(xué)習(xí)有所期待

其實寫這種教程極易陷入明白的人不需要看隘谣,不明白的人看了依然不會的情況增拥,所以我要講得足夠詳細,為了防止讀者看睡著了又得適當(dāng)精煉。第一次寫教程掌栅,請多擔(dān)待秩仆。

接下來的章節(jié)就好辦了,因為有代碼寫渣玲,有數(shù)據(jù)顯示逗概,相對來說生動了許多弟晚。

本文會同步在多個平臺忘衍,由于有的平臺發(fā)文后不可修改,所以勘誤和難點解釋請注意查看文后留言卿城,也可以查看我的個人博客版

打算建個github項目枚钓,把代碼都上傳上去,也考慮建個QQ交流群瑟押。會在后續(xù)文章中公布這些信息搀捷。對于本系列課程有啥建議也歡迎留言。

關(guān)注本號多望,查看后續(xù)更新嫩舟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市怀偷,隨后出現(xiàn)的幾起案子家厌,更是在濱河造成了極大的恐慌,老刑警劉巖椎工,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饭于,死亡現(xiàn)場離奇詭異,居然都是意外死亡维蒙,警方通過查閱死者的電腦和手機掰吕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颅痊,“玉大人殖熟,你說我怎么就攤上這事“呦欤” “怎么了菱属?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恋捆。 經(jīng)常有香客問我照皆,道長,這世上最難降的妖魔是什么沸停? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任媚媒,我火速辦了婚禮宴凉,結(jié)果婚禮上砍濒,老公的妹妹穿的比我還像新娘翠储。我一直安慰自己,他們只是感情好假颇,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般倒淫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上败玉,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天敌土,我揣著相機與錄音,去河邊找鬼运翼。 笑死返干,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的血淌。 我是一名探鬼主播矩欠,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼悠夯!你這毒婦竟也來了癌淮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沦补,失蹤者是張志新(化名)和其女友劉穎乳蓄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體策彤,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡栓袖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了店诗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裹刮。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖庞瘸,靈堂內(nèi)的尸體忽然破棺而出捧弃,到底是詐尸還是另有隱情,我是刑警寧澤擦囊,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布违霞,位于F島的核電站,受9級特大地震影響瞬场,放射性物質(zhì)發(fā)生泄漏买鸽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一贯被、第九天 我趴在偏房一處隱蔽的房頂上張望眼五。 院中可真熱鬧妆艘,春花似錦、人聲如沸看幼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诵姜。三九已至汽煮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棚唆,已是汗流浹背暇赤。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瑟俭,地道東北人翎卓。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像摆寄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坯门,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355