使用Python调用Twitter搜索API
我想做的是通过推特的搜索API获取特定地理位置周围的推文。我使用的是Python的OAuth2(之前用过python-twitter,但它有点问题)。
我的代码看起来像这样:
class Herp:
def oauth_req(self,url, http_method="GET", post_body=None, http_headers=None):
consumer = oauth.Consumer(key=credentials.CONSUMER_KEY, secret=credentials.CONSUMER_SECRET)
token = oauth.Token(key=credentials.ACCESS_TOKEN, secret=credentials.ACCESS_TOKEN_SECRET)
client = oauth.Client(consumer, token)
resp, content = client.request(
url,
method=http_method
)
return content
def search(self):
self.searchResults = self.oauth_req('https://api.twitter.com/1.1/search/tweets.json?q=geocode="42.3581,-71.0636,10mi"&count=100&type=recent')
def __init__(self):
self.client = None
self.SearchResults = None
请求是成功的,返回的格式也和我预期的一样,但就是没有包含任何推文。
这是我收到的JSON响应:
{"statuses":[],"search_metadata":{"completed_in":0.013,"max_id":445673138282442752,"max_id_str":"445673138282442752","query":"goeocode%3D%2242.3581%2C-71.0636%2C10mi%22","refresh_url":"?since_id=445673138282442752&q=goeocode%3D%2242.3581%2C-71.0636%2C10mi%22&include_entities=1","count":100,"since_id":0,"since_id_str":"0"}}
抱歉格式有点糟糕,但你可以看到第一个内容是“statuses":[],这应该是一个包含推文的数组。详细信息可以查看这里 -> https://dev.twitter.com/docs/api/1.1/get/search/tweets
顺便说一下,我知道应该有推文,因为响应对象中有“count”:100的元数据。(我也试过限制只返回1条推文,但还是没有返回任何推文)
我觉得这不是超时的问题,而且在网上也没找到相关的帮助,所以我现在没主意了。希望能得到一些帮助!
更新:
多亏了Drewness的提醒,我发现了问题所在。我意识到必需的查询字符串参数“q”没有设置,所以我的查询字符串是错误的。
q=geocode="42.3581,-71.0636,10mi"&count=100&type=recent
需要改成:
q=""&geocode="42.3581,-71.0636,10mi"&count=100&type=recent
不过,我在提问后8小时内不能回答自己的问题……
1 个回答
1
看起来你把一些字母搞混了:
...
goeocode=
...