使用Python调用Twitter搜索API

1 投票
1 回答
1614 浏览
提问于 2025-04-17 22:43

我想做的是通过推特的搜索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=
...

撰写回答