如何打开我的Twitter搜索查询的JSON响应?
我现在有一个用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
我可能忽略了一些很小的细节。到底出了什么问题呢?
1 个回答
2
rauth
库是建立在requests
库之上的,它返回一个特别的requests.Session
对象。
通过session.get()
得到的对象是一个requests.Response
对象;你可以调用response.json()
方法来获取JSON格式的响应数据,并将其转化为Python的数据结构:
print search_results.json()
不需要再把这些数据转回JSON字符串,可以直接使用Python的数据结构进行操作。