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

get data のコードは機能しますが、ページに出力する代わりに印刷しようとしています.それをテストするためにself.response.out.write(str(html))を使用してください(HTMLではなくJSONデータを使用してください)。次に、応答をレンダリングできるテンプレートを作成します。

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 の使用を検討する必要がある場合があります。優れた Python クライアントについては、tweepy を確認してください: https://github.com/tweepy/tweepy

于 2013-01-16T01:43:52.203 に答える