1. 程式人生 > >微博數據抓取練習

微博數據抓取練習

pen base 多維 efault 寫到 接口 時間 https sinaweibo

由於最近工作的關系接觸到了微博數據分析這一塊,覺得挺有意思的,想先練習將微博的數據抓取下來練習看看。

目標是將微博的內容和作者這兩個數據儲存在數據庫內,由於數據量不是很大,先暫時用MySQL,如果以後要大量儲存再考慮使用Hive或是HBASE。

然後代碼使用Python3,因為寫起來比較方便。下面就是step by step的教學了。

1、設定微博開發平臺

要調取微博的數據很簡單,首先登入微博開放平臺,註冊一個應用,取得APP_KEY和APP_SECRET,然後再將授權回調頁和取消授權回調頁改成
https://api.weibo.com/oauth2/default.html

基本上微博的前置作業就完成了。

2、MySQL創建數據庫

打開cdm,輸入mysql -u root -p,進到mysql後,輸入create DATABASE weibo; 創建一個新的數據庫weibo,再輸入use weibo進入到weibo數據庫內。

再輸入下面的代碼,創建一個新的表,表裏面只有兩列,一個儲存名字,一個儲存內容,如果想設定default id也行,不過我這個沒必要,然後varchar的長度我故意設大一點以免輸入發生問題

實際上應該不用這麽多

技術分享圖片

3、查看接口

首先進入微博開放平臺看一下他的API文檔,主要是看一下他返回的格式

https://open.weibo.com/wiki/Business_API%E6%96%87%E6%A1%A3#.E6.95.B0.E6.8D.AEAPI

技術分享圖片

找出我要的數據,然後記錄下來

4、編寫代碼

代碼其實挺簡單的,先import一些需要的包進來,sinaweibopy3是我在網上找到的一個微博工具包,可以上github下載

技術分享圖片

然後再利用sinaweibopy3的模塊向微博接口傳送授權請求,接著就會打開一個Oauth2的授權頁面(關於Oauth2的授權原理接口文檔有寫),將url後面code=“xxxxx”的地方復制下來

技術分享圖片

將網頁後面給的code輸入,並且取得access token 和 expire in,接著再利用這兩個向接口請求數據,到這邊就差不多大功告成了。

技術分享圖片

技術分享圖片

技術分享圖片

將請求到的數據先打印出來看看,返回的數據格式應該是跟接口文檔裏的一樣。

技術分享圖片

4、儲存數據

由於我們只要作者跟他的內容,所以要先把需要的數據找出來,從接口文檔可以找出來我要的數據位置,先打印出來檢查看看。

技術分享圖片

看起來是沒問題的,接著就是寫到MySQL庫裏面

技術分享圖片

然後到MySQL裏面查看數據,可以看到微博的數據成功的寫進了數據庫內(我後來發現我把作者跟內容搞反了,不過不影響這次的練習)

技術分享圖片

接下來的想法是抓取更多維度的數據,然後用NLTK之類的對文本進行分析,做出簡單的報表,不過這個工作量應該挺大的,不知道有沒有時間來搞。

微博數據抓取練習