(本人原創(chuàng)慌烧,謝絕轉(zhuǎn)載)
最近,豇豆哥寫了關(guān)于一系列的爬蟲,其中三大指數(shù)就是最近著手寫第焰,今天先給大家分享第一指數(shù):微博指數(shù)
分析:
首先打開微博指數(shù)的首頁微指數(shù)首頁,我們采用關(guān)鍵詞iPhone作為搜索條件妨马,同時開啟fiddler抓包工具挺举。這里說明一下:
在fiddler設(shè)置一下過濾條件,就能過濾掉無用雜亂的其他數(shù)據(jù)烘跺,剩下的數(shù)據(jù)就是你所需要的湘纵。
我們訪問iPhone的微指數(shù)抓圖下來可以看到這些數(shù)據(jù):
然后返回fiddler,豇豆哥一般不喜歡用chrome或者firefox的抓包工具滤淳,太復(fù)雜梧喷,太繁瑣(fiddler可謂爬蟲抓包神器,不會的同學一定要學2备馈F痰小!)
通過查看屁擅,找到了我們想要的源碼數(shù)據(jù)偿凭,這下就好。帶入?yún)?shù)派歌,請求這個網(wǎng)頁弯囊,他的返回值就是我們需要的,以上是分析過程胶果。
編寫程序:
分析完成之后匾嘱,我們就著手寫程序,豇豆哥寫爬蟲有個習慣是:
1早抠、請求網(wǎng)站霎烙,我一般都會請求該網(wǎng)頁的原網(wǎng)站。
2、最喜歡的庫就是requests庫吼过,特別是涉及到模擬登陸的時候锐秦,這個庫能大大提升你的編程效率。
3盗忱、喜歡用自己的小工具酱床,在headers這塊自己開發(fā)了一個小程序,非程说瑁快速的獲取headers扇谣。
ok習慣講完了。我們開始寫程序了:
上面分析闲昭,豇豆哥找到了所需要訪問的網(wǎng)站罐寨,那么這個網(wǎng)站需要傳入那些參數(shù)了?可以查看fiddler的webforms序矩,如下圖:
網(wǎng)站是采用get方式傳入的數(shù)據(jù)鸯绿,需要的參數(shù)有wid,sdate簸淀,edate瓶蝴,__rdn,第一個參數(shù)我們不知道是什么含義租幕,但是后面參數(shù)可以猜到起始時間舷手,rnd是時間戳(http網(wǎng)絡(luò)知識),都不影響網(wǎng)頁的訪問劲绪,我們就注重去獲取wid的值男窟。
獲取wid值:
wid變量我們是不知道,根據(jù)經(jīng)驗來說贾富,這塊應(yīng)該是在前面的網(wǎng)頁中產(chǎn)生(動態(tài)js產(chǎn)生或者請求網(wǎng)頁產(chǎn)生)歉眷。豇豆哥通過查找:1030000000269這個值,發(fā)現(xiàn)了wid的來源祷安,如圖:
可以看到姥芥,我們是通過搜索關(guān)鍵詞:iphone,請求圖中的網(wǎng)頁后汇鞭,他的返回值中剛好有:1030000000269 這個數(shù)值,找到這個數(shù)值之后庸追,對于下一步的網(wǎng)頁請求就簡單了霍骄。
所以總結(jié)一下:
1、首先是分析網(wǎng)頁結(jié)構(gòu)淡溯,找到目標數(shù)據(jù)读整,分析數(shù)據(jù)來源。
2咱娶、找到參數(shù)關(guān)鍵字逐步網(wǎng)上層尋找關(guān)鍵字米间,并取得關(guān)鍵字的值
3强品、做好分析之后再開始編寫程序。
目前進展:微博指數(shù)現(xiàn)在是放在我們的服務(wù)器上供我們使用屈糊。其中還需要編寫api(會用到flask的榛,redis等庫,不展開講)