在调用Twitter API时无法使用Python获取URL内容

时间:2013-01-16 01:38:27

标签: python json google-app-engine twitter urllib2

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

2 个答案:

答案 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