Как открыть ответ JSON на мой поисковый запрос в Твиттере?

У меня есть этот скрипт Python для командной строки с поддержкой rauth:

import json
from rauth import OAuth1Service

twitter = OAuth1Service(
            name='twitter',
            consumer_key='[REDACTED]',
            consumer_secret='[REDACTED]',
            request_token_url='https://api.twitter.com/oauth/request_token',
            access_token_url='https://api.twitter.com/oauth/access_token',
            authorize_url='https://api.twitter.com/oauth/authorize',
            base_url='https://api.twitter.com/1.1/')

request_token, request_token_secret = twitter.get_request_token()
authorize_url = twitter.get_authorize_url(request_token)

print 'Copy-paste this URL into your browser: ' + authorize_url
twitter_pin = raw_input('Enter PIN: ')

session = twitter.get_auth_session(request_token,
                                   request_token_secret,
                                   method='POST',
                                   data={'oauth_verifier': twitter_pin})

search_results = session.get('search/tweets.json', params={'q':'example'})

print json.dumps(search_results)

rauth выполняет всю обработку OAuth, и я получаю объект взамен. Я пытаюсь напечатать его, и оно говорит Response [200] (в заостренных скобках), указывая на успех. Я пытаюсь использовать Python json.dump, чтобы распечатать содержимое, и я получаю:

TypeError: <Response [200]> is not JSON serializable

Я, наверное, пропускаю что-то очень маленькое. Что с этим не так?

Соответствующая документация Twitter Соответствующая документация rauth

1 ответ

Решение

rauth библиотека строится на вершине requests библиотека, возвращающая специализированный requests.Session объект.

Объект, возвращаемый session.get() это requests.Response объект; позвонить response.json() метод для получения данных ответа JSON в виде структуры Python:

print search_results.json()

Нет необходимости возвращать это обратно в строку JSON, работайте напрямую со структурой данных Python.

Другие вопросы по тегам