我正在尝试调用Twitter API来获取JSON,但似乎无法获得JSON。如果我将代码中的URL替换为“https://mashable.com”,我可以阅读回复。我能够使用CURL在PHP中读取响应。我正在使用Python 2.7,Google App Engine。我是Python的新手。你能看出我出错的地方吗?这是我的代码:
import jinja2
import os
import webapp2
import urllib2
template_env = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.getcwd()))
class MainPage(webapp2.RequestHandler):
def get(self):
template = template_env.get_template('home.html')
self.response.out.write(template.render())
class Get_data(webapp2.RequestHandler):
def get(self):
response = urllib2.urlopen('https://api.twitter.com/1/favorites.json?count=5&screen_name=episod')
html = response.read()
print(html)
application = webapp2.WSGIApplication([('/', MainPage),('/get_data', Get_data)],debug=True)
答案 0 :(得分:1)
获取数据中的代码有效,但您正在尝试打印而不是在页面上输出它。 使用 self.response.out.write(str(html))来测试它(顺便说一句,它的JSON数据不是html)。然后创建一个模板,您可以在其中呈现响应。
from django.utils import simplejson as json
class Get_data(webapp2.RequestHandler):
def get(self):
response = urllib2.urlopen('https://api.twitter.com/1/favorites.json?count=5&screen_name=episod')
data = response.read()
json_data = json.loads(data)
template_values = {
'param1': json_data["..."],
'param2': json_data["..."],
}
template = jinja_environment.get_template(TEMPLATE)
self.response.out.write(template.render(template_values))
答案 1 :(得分:0)
你得到的回应是什么?我猜测appengine服务器已达到Twitter API速率限制。
您可能需要考虑使用完整的Oauth2版本的twitter API来获取自己的费率限制帐户。查看一个好的python客户端的tweepy:https://github.com/tweepy/tweepy