微博全站爬蟲修復更新啦!!!

  • 2019 年 12 月 4 日
  • 筆記

說在前面的話 距離開源微博全站爬蟲過去已經快半個月了,陸陸續續收到了一些粉絲們的回饋,包括如何獲取 cookies主題爬蟲模組失效了,以至於後來整個爬蟲失效,

說一聲抱歉,當時那段時間我實在太忙,就沒有立刻解決,但是記在備忘錄上,但是今天下午終於可以有空閑了,就著手解決了這個問題;問題主要是由微博介面和網頁結構的變化引起的,現將有關修改過程及結果修改如下;同時會詳介紹如何獲取 cookies 。

用戶微博模組介面變化

原來的介面是

query_data = {      'keyword': self.keyword,      'suser': '找人'  }  search_response = requests.post(url='https://weibo.cn/search/', headers=self.headers, data=query_data,verify=False)  

由於是抽取的類中的程式碼段,有些變數見名知意即可,不需要追究其值

後面我通過抓包發現,其介面變化為

query_data = {      'keyword': self.keyword,      'suser': '2'  }  search_response = requests.post(url='https://weibo.cn/find/user', headers=self.headers, data=query_data,verify=False)  

可以發現,無論是介面的 URL 地址還是介面參數均有變化,但是看上去又不像是針對爬蟲的,因為發爬的技術並沒有升級,可能是業務邏輯的整合,只能這樣猜測了。

主題微博模組介面變化

原來的介面是

res = requests.get(url='https://weibo.cn/search/mblog?keyword={}'.format(self.keyword), headers=self.headers,verify=False)  

現改成了

data = {      'page': 1,      'keyword': self.keyword  }  res = requests.post(url='https://weibo.cn/search/mblog', headers=self.headers, data=data)  

介面請求方式由 get 改成了參數隱秘性更好的 post。

如何獲取 cookies

cookies 是什麼,這裡不引經據典了,一句話,cookies 是客戶機(也就是你的 Chrome、FireFox 等瀏覽器)維持會話狀態的一段字元串資訊,微博就應用了這種技術。

怎麼獲取 cookies 呢?

打開微博登陸首頁

https://passport.weibo.cn/signin/login?entry=mweibo&r=https%3A%2F%2Fweibo.cn%2F&backTitle=%CE%A2%B2%A9&vt=  

F12 打開開發者工具(Mac OS 類似),並切換到 NetWork 標籤頁,如下

一切準備就緒後,點擊頁面上的登錄按鈕,按如下方式獲得 cookies

如何獲得最新程式碼

最新程式碼已更新在 Github:

https://github.com/Python3Spiders/