0

我正在尝试调用 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)
4

2 回答 2

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))
于 2013-01-16T01:50:27.133 回答
0

你得到的回应是什么?我猜 appengine 服务器已经达到 Twitter API 速率限制。

您可能需要考虑使用完整的 Oauth2 版本的 twitter API 来获得您自己的限速帐户。查看 tweepy 以获得良好的 python 客户端:https ://github.com/tweepy/tweepy

于 2013-01-16T01:43:52.203 回答