使用微博API接口獲取數據

巧婦難為無米之炊。
數據獲取是數據分析的前提。許多網站會通過API接口向第三方開放網站的部分數據。新浪微博也不例外。你可以查看微博API列表

本文將對如何使用微博API做初步性的介紹,以獲得基本概念和認識,方便之后的深入理解。

step1:使用python調用微博API,首先要下載python的SDK,即sinaweibopy

sinaweibopy是python專用的支持微博API的OAuth 2客戶端,無依賴,100%純Py,單個文件,代碼簡潔,運行可靠,也是新浪微博官方推薦的Python SDK。

你可以通過pip直接安裝:

pip install sinaweibopy

SDK是什么?SDK的英文全稱是software development kit(軟件開發工具包)。簡單來講,它是一個代碼庫,包含著可復用的代碼,這些代碼用來開發你的應用。你寫一個app的代碼時,不需要重復去寫諸如draw text on the actual screen這樣的代碼。利用SDK可以幫你做到這些。總之,所有這些代碼庫和其他一些工具,就構成了我們所說的SDK。

step2:理解新浪微博的授權機制,即OAuth 2

API的調用是需要獲取用戶身份認證的(用戶授權)。目前微博開放平臺用戶身份鑒權主要采用的是OAuth2.0

關于OAuth2.0協議的授權流程可以參考下面的流程圖,其中Client指第三方應用(即我們在第三步創建的自己的應用),Resource Owner指用戶,Authorization Server是我們的授權服務器,Resource Server是API服務器。

從流程圖中可以看到,為調用API服務器內容,需要將access token告訴API服務器;而access token是在用戶授權后由新浪(授權服務器)返回給我們創建的應用的;為完成用戶授權,我們的應用首先要將授權頁面給到用戶(authorization request)。

微博API的授權機制(來自微博開放平臺開發文檔)

用戶授權后瀏覽器的URL大概長這樣:https://api.weibo.com/oauth2/default.html?code=0acebd79dc4cdd04879699e803af038a

我們需要向新浪授權服務器提交code后面的字符串才能獲得access token。相當于告訴新浪服務器我們的應用已經得到用戶的授權,現在可以訪問用戶的數據了,于是授權服務器給到我們通行證(access token),就可以從API服務器獲取微博數據了。

理解了上面的機制,我們才知道如何編寫代碼來調用API。

step3:在微博開放平臺創建自己的應用

現在我們來創建自己的應用。創建應用的目的是為了獲得app key和app secret。

我們通過微連接來創建移動應用。你也可以創建其它類型的應用。應用創建完成后,會分配唯一的app key和app secret。你可以在“我的應用-應用信息-基本信息”中查詢,這將在授權中用到。注意:不需要提交審核,需要的只是app key和app secret。

如果是站外網頁應用或移動客戶端應用,出于安全性考慮,需要在平臺網站填寫redirect_url(授權回調頁),才能使用OAuth2.0。填寫地址為“我的應用>應用信息>高級信息”。這里,我們將授權回調頁面和取消授權回調頁均設置為默認回調頁:https://api.weibo.com/oauth2/default.html

我的應用-應用信息-高級信息

step4:python代碼實現

首先,導入需要的模塊:

from weibo import APIClient
import webbrowser   #python內置的包,支持對瀏覽器進行操作

利用微博SDK創建我們的應用:

APP_KEY = '123456'
APP_SECRET = 'abc123xyz456'
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html'      #回調授權頁面,用戶完成授權后返回的頁面
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)

得到授權頁面的url(https://api.weibo.com/oauth2/authorize?redirect_uri=https%3A//api.weibo.com/oauth2/default.html&response_type=code&client_id=729983294)。利用webbrowser打開這個url,這會會喚起瀏覽器,打開https://api.weibo.com/oauth2/default.html?code=abc123

url=client.get_authorize_url() #得到授權頁面的url
webbrowser.open_new(url)  #打開這個url
打開授權頁面的url

用戶完成授權后的url長這樣:https://api.weibo.com/oauth2/default.html?code=abc123。我們需要code=后面的內容。

print '輸入url中code后面的內容后按回車鍵:'
code = raw_input()

利用code得到access token:

r = client.request_access_token(code)
access_token = r.access_token # 新浪(授權服務器)返回的token
expires_in = r.expires_in

可以打印r看看里面有什么東西:

print(r)
{'access_token': u'abcqwe123', 'expires': 1662109746, 'expires_in': 1662109746, 'uid': u'2164581421'}

設置得到的access_token,就可以直接調用API了:

client.set_access_token(access_token, expires_in)

輸出最新的公共微博:

print(client.statuses__public_timeline)

返回的具體內容可以查看微博API文檔

例如,我們可以輸出用戶的昵稱、簡介、位置和微博:

for i in range(0,length):
    print(u'昵稱:'+statuses[i]['user']['screen_name'])
    print(u'簡介:'+statuses[i]['user']['description'])
    print(u'位置:'+statuses[i]['user']['location'])
    print(u'微博:'+statuses[i]['text'])
最新的公共微博

參考資料:

python調用微博API
如何通過python調用新浪微博的API

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容