總結 如何通過python呼叫新浪微博的API

2022-11-27 03:07:43 字數 2185 閱讀 4752

使用python呼叫api的話,首先要去下一個python的sdk,sinaweibopy

可以使用pip很快的匯入,github連線裡的wiki也有入門的使用方法,很容易看懂。

在呼叫api之前,首先要搞懂什麼叫oauth 2

連線在此: 

4.簡單的呼叫api例項

參考了往上很多資料和文件,寫了一個簡單的呼叫過程。

#

_*_ coding: utf-8 _*_

from weibo import

apiclient

import

webbrowser

callback_url = ''

#這個是設定**地址,必須與那個”高階資訊“裡的一致

url =client.get_authorize_url()

#todo: redirect to url

#print url

webbrowser.open_new(url)

#獲取url引數code:

code = '

2fc0b2f5d2985db832fa01fee6bd9316

'r =client.request_access_token(code)

access_token = r.access_token #

expires_in = r.expires_in #

#todo: 在此可儲存access token

client.set_access_token(access_token, expires_in)

print client.friendships.friends.bilateral.ids.get(uid = 12345678)

通過以上的**,我實現了呼叫相互關注api的呼叫,即查詢與某個id的使用者相互關注的人的列表。

比較噁心的是code的獲取,我一開始看sinaweibopy的文件的時候也沒弄懂是什麼意思,如上面的**所示,url得到的是一個授權的**,我們通過

webbrowser.open_new(url)

看到了嗎? 問號後面有一個code=……的一個東西,把等號後面的字串拷貝下來賦給code就可以了,但是每次執行程式是code不是一成不變的,也就是說每次都要有這麼一個手動獲取的過程,我覺得很麻煩,以後自己再研究一下,實現自動獲取code就好了。如果能有哪位大神告訴我,感激不盡~

好了,得到正確的code之後就可以完成授權認證,也就可以呼叫微博的api啦,至於如何在python下呼叫,我拷貝一下sinaweibopy上的介紹:

api:statuses/user_timeline

請求格式:get

請求引數:

access_token:string,採用oauth授權方式為必填引數,其他授權方式不需要此引數,oauth授權後獲得。

uid:int64,需要查詢的使用者id。

screen_name:string,需要查詢的使用者暱稱。

(其它可選引數略)

呼叫方法:將api的“/”變為“.”,根據請求格式是get或post,呼叫get ()或post()並傳入關鍵字引數,但不包括source和access_token引數:

r = client.statuses.user_timeline.get(uid=123456)

for st in r.statuses:

print st.text

若為post呼叫,則示例**如下:

r = client.statuses.update.post(status=u'測試oauth 2.0發微博')
若需要上傳檔案,傳入file-like object引數,示例**如下:

f = open('/users/michael/test.png', 'rb')

r = client.statuses.upload.post(status=u'測試oauth 2.0帶發微博', pic=f)

f.close() # apiclient不會自動關閉檔案,需要手動關閉

請注意:上傳的檔案必須是file-like object,不能是str,因為無法區分一個str是檔案還是欄位。可以通過stringio把一個str包裝成file-like object。