私はPythonの初心者で、Weibo(中国のTwitter) APIを呼び出してjson応答を受け取るプログラムを書こうとしています。これは基本的なキーワード検索と検索結果の取得の例です。
しかし問題は、Python から API 呼び出しを行う方法がわからないため、エラー メッセージが表示され続けることです。私が使用しようとしている API はhttp://open.weibo.com/wiki/2/search/topics です。 これは中国語ですが、基本的には API URL、メソッド -> GET、および必要なパラメーターのリストを示しています。私の推測では、パラメーターを台無しにしたと思います。そのメソッド: GET はパラメーターとして扱われるべきではありませんが、私が知らない他の方法で扱われるべきです。誰か助けてくれませんか??
以下は私が試したことです。関連する部分を貼り付けただけです。この部分の前にAPI認証コードがあります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# sudo pip install sinaweibopy
import sys
import urllib, urllib2
from weibo import APIClient
import webbrowser
APP_KEY = '1234' # there are real values here in the actual code
APP_SECRET = '1234'
CALLBACK_URL = 'http://111.111'
def get_auth():
# some code here, not pasted
def get_data():
access_token = '1234'
expires_in = '1234'
# This works fine
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
client.set_access_token(access_token, expires_in)
r = client.statuses.user_timeline.get()
for st in r.statuses:
print st.text.encode('utf-8')
# This doesn't work
# statuses = client.search.topics.get(q=u'eland')
# This also doesn't work
# url = 'https://api.weibo.com/2/search/topics.json'
# params = {'method': GET, 'source': APP_KEY, 'access_token': access_token, 'q': 'new balance', 'count' : 50}
# request = urllib2.Request(url, urllib.urlencode(params))
# response = urllib2.urlopen(request)
エラー メッセージ (URL 呼び出し):
Traceback (most recent call last):
File "weibopr.py", line 85, in <module>
elif opt == '2': get_data()
File "weibopr.py", line 57, in get_data
response = urllib2.urlopen(request)
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 448, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden