本文記錄了用新浪微博官方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 sys reload(sys) sys.setdefaultencoding('utf-8') from weibo import APIClient import json import webbrowser import io APP_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 url webbrowser.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,類似abc123xyz456 expires_in = r.expires_in # token過期的UNIX時間:http://zh.wikipedia.org/wiki/UNIX%E6%97%B6%E9%97%B4 # TODO: 在此可保存access token client.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,具體參考官方文檔。
