最近想爬取新浪微博的評論,百度了一下,有個新浪開放平台提供了這個API
於是按照它的說明,去獲取Access_token:
1、點擊微鏈接
2、立即創建微鏈接
3、選擇網頁應用
4、填寫信息后提交
5、應用創建完后可以在“我的應用”中查看信息
6、在“應用信息”--“高級信息”中可以設置網站的授權回調頁和取消授權回調頁,記住自己的授權回調頁
7、進入
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
YOUR_CLIENT_ID:即應用的AppKey,可以在應用基本信息里查看到。
YOUR_REGISTERED_REDIRECT_URI:即之前填寫的授權回調頁,注意一定要完全相同。
如果用戶授權成功后,會跳轉到回調頁,開發者此時需要得到url參數中的code值,注意code只能使用一次。
8、參考文檔
訪問如下頁面得到Access Token:
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
我的問題就出在這里:
這一步得到錯誤:
{"error":"HTTP METHOD is not suported for this request!","error_code":10021,"request":"/oauth2/access_token"}
查找錯誤信息發現是請求方式不對,應該是post方式,我們上面這樣屬於get方式
於是自己編寫python代碼:
import urllib2 import urllib values={} values['client_id'] = '*****' values['client_secret'] = '****' values['grant_type'] = '------' values['code'] = '-------' values['redirect_uri'] = '------' data = urllib.urlencode(values) url = "https://api.weibo.com/oauth2/access_token" request = urllib2.Request(url,data) #使用post方法 # geturl = url+'?'+data # request = urllib2.Request(geturl) #get()方法 response = urllib2.urlopen(request) print response.read()
得到Access_token,接下來就可以自己寫代碼爬取評論了。
參考:http://www.cnblogs.com/e241138/archive/2013/03/15/sina-weibo-oauth-access_token.html
