【Part1——理論篇】
試想一個問題,如果我們要去抓取某個微博大V微博的評論數(shù)據(jù)凄硼,應(yīng)該怎樣去實現(xiàn)呢?最簡單的做法就是找到微博評論數(shù)據(jù)接口铅协,然后通過改變參數(shù)來獲取最新數(shù)據(jù)并保存。首先尋找從微博抓取評論的接口摊沉,如下圖所示狐史。
但是很不幸,該接口頻率受限说墨,抓不了多少次就會被禁骏全,剛準備好飛,就涼涼了尼斧。
接下來小編又開始選擇移動端的微博網(wǎng)站姜贡,先登錄,然后找到我們想去抓取評論的微博棺棵,打開瀏覽器自帶流量分析工具鲁豪,一直把評論往下拉,找到評論數(shù)據(jù)接口律秃,如下圖所示爬橡。
之后看到“參數(shù)”選項卡進行點擊,可以看到有參數(shù)如下圖所示的內(nèi)容:
可以看到一共有4個參數(shù)棒动,其中第1糙申、2個參數(shù)為該條微博的id,就像每個人的身份證號一樣船惨,這個就相當(dāng)于該條微博的“身份證號”柜裸,max_id是變換頁碼的參數(shù)缕陕,每次都會發(fā)生變化,下次的max_id參數(shù)值在本次請求的返回數(shù)據(jù)中疙挺。
【Part2——實戰(zhàn)篇】
有了上文的基礎(chǔ)之后扛邑,下面我們開始擼代碼,通過Python來實現(xiàn)铐然。
1蔬崩、首先區(qū)分url,第一次不需要max_id,第二次需要用第一次返回的max_id搀暑。
2沥阳、請求的時候需要帶上cookie數(shù)據(jù),微博cookie的有效期比較長自点,足夠去抓一條微博的評論數(shù)據(jù)了桐罕,瀏覽器分析工具中可以找到cookie數(shù)據(jù)。
3桂敛、然后將返回的數(shù)據(jù)轉(zhuǎn)換成json格式功炮,取出評論內(nèi)容、評論者昵稱和評論時間等數(shù)據(jù)术唬,輸出結(jié)果如下圖所示死宣。
4、為了保存評論內(nèi)容碴开,我們需要把評論中的表情去掉毅该,利用正則表達式進行處理,如下圖所示潦牛。
5眶掌、然后接下來把內(nèi)容保存到txt文件中,使用簡單的open函數(shù)進行實現(xiàn)巴碗,如下圖所示朴爬。
6、重點來了橡淆,通過這個接口最多只能返回16頁的數(shù)據(jù)(每頁20條)召噩,網(wǎng)上也有說能返回50頁的,但是不同的接口逸爵、返回的數(shù)據(jù)條數(shù)也不同具滴,所以我加了個for循環(huán),一步到位师倔,遍歷還是很給力的构韵,如下圖所示。
7、這里把函數(shù)命名為job疲恢。為了一直能夠取出最新的數(shù)據(jù)凶朗,我們可以用schedule來給程序加個一個定時功能,每隔10分鐘或者半個小時抓取1次显拳,如下圖所示棚愤。
8、對獲取到的數(shù)據(jù)杂数,做去重處理宛畦,如下圖所示。如果評論已經(jīng)在里面了的話耍休,就直接pass掉,如果沒有的話货矮,繼續(xù)追加就可以了羊精。
這項工作到這里就基本上完成了。
Python學(xué)習(xí)交流群囚玫,歡迎各位小伙伴來交流學(xué)習(xí)喧锦。