如何打开我的Twitter搜索查询的JSON响应?

0 投票
1 回答
1793 浏览
提问于 2025-04-18 12:07

我现在有一个用rauth库写的命令行Python脚本:

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 个回答

2

rauth库是建立在requests之上的,它返回一个特别的requests.Session对象

通过session.get()得到的对象是一个requests.Response对象;你可以调用response.json()方法来获取JSON格式的响应数据,并将其转化为Python的数据结构:

print search_results.json()

不需要再把这些数据转回JSON字符串,可以直接使用Python的数据结构进行操作。

撰写回答