標籤:
本文記錄了用新浪微博官方Python SDK調用API進行開發的流程。準備工作
申請成為開發人員並建立一個應用:
首先要有一個新浪微博的帳號,然後去新浪微博開放平台(http://open.weibo.com/)建立一個應用,具體的步驟官網文檔介紹的非常詳細:在開發人員頁面點擊“登入” -> “建立應用” -> 選擇應用類型(如“網頁應用”)-> 填寫應用資訊。
P.S.,應用需要設定一個回調地址(CALL_BACK),可以設定為預設的回調網址:https://api.weibo.com/oauth2/default.html。
這一步完成後,將得到三個有用的資訊:APP_KEY,APP_SECRET和CALL_BACK,這三個資訊在後面編寫程式時將用到。
OAuth2.0授權
微博開放介面的調用,如發微博、關注等,都是需要擷取使用者身份認證的。目前微博開放平台使用者身份鑒權主要採用的是OAuth2.0。官方文檔有非常詳細的說明,瞭解了授權機制後有助於使用SDK編寫程式的過程。
下載和安裝新浪微博Python SDK
打包下載新浪微博官方Python SDK,網頁中說明了安裝有兩種方式,第一種用命令列工具pip安裝,第二種下載源碼包安裝。
對於第一種安裝方式,pip是Python的包管理工具,可以很方便的安裝Python模組。安裝成功後,只需在命令列(或linux終端)中執行pip install sinaweibopy,SDK的包sinaweibopy就安裝完畢。測試是否安裝成功,可以在python命令列中輸入:import weibo,如果沒有錯誤提示說明安裝成功。實際上Python SDK主要就是模組weibo,後面在使用SDK時就是調用該模組中的函數。
對於第二種方式,需要拷貝下載的源碼到安裝目錄或者配置Python模組搜尋的Path中。
讀寫微博介面程式
下面就可以調用微博API寫微博操作程式了,下面簡單介紹一個抓取微博資料的程式。
# _*_ coding: utf-8 _*_import sysreload(sys)sys.setdefaultencoding(‘utf-8‘)from weibo import APIClientimport jsonimport webbrowserimport ioAPP_KEY = ‘‘ ## 填寫應用程式的資訊APP_SECRET = ‘‘CALLBACK_URL = ‘https://api.weibo.com/oauth2/default.html‘client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)url = client.get_authorize_url()# TODO: redirect to urlwebbrowser.open_new(url)#print url# obtain url code:code = raw_input("input the code: ").strip()client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)r = client.request_access_token(code)access_token = r.access_token # 新浪返回的token,類似abc123xyz456expires_in = r.expires_in # token到期的UNIX時間:http://zh.wikipedia.org/wiki/UNIX%E6%97%B6%E9%97%B4# TODO: 在此可儲存access tokenclient.set_access_token(access_token, expires_in)res = client.statuses.public_timeline.get(count=200) ##返回最新的200條熱門微博#res = client.statuses.user_timeline.get() ##返回作者發布的曆史微博#res = client.statuses.friends_timeline.ids.get() ##返回好友發布的微博id#res=client.emotions.get()a = json.dumps(res, ensure_ascii = False,indent = 2)fout = io.open(‘test‘,‘w‘,encoding=‘utf-8‘)fout.write(a)
運行程式,自動開啟回調頁,將網址內的“code”拷貝至程式,程式執行成功後,就可以得到微博資料了。
這裡實際是調用新浪微博提供的API,具體參考官方文檔。
新浪微博API的使用Python