3

我是 python 新手Twitter API
我已经使用 twitter 设置了身份验证,并且我尝试了运行良好的搜索。

t = twitter.Twitter(auth=auth)    
tt = t.search.tweets(q="stackoverflow",rpp=50)

这工作正常,我可以读取输出。

但如果我尝试:

for page in range(1,6):
    tt = t.search.tweets(q="stackoverflow", rpp=100, page=page)

这会因错误而崩溃:

details: {"errors":[{"code":44,"message":"page parameter is invalid"}]}

我查看了 Twitter 页面,似乎页面参数可以作为可选参数:https ://dev.twitter.com/docs/api/1/get/search 。

或者,如果速率限制为每个请求 100 个结果,我如何获得更多搜索结果。是否有其他解决方法?

4

1 回答 1

1

您应该使用该max_id值来遍历结果。向 发出第一个请求Twitter API,从结果中读取max_id并在下一个请求中发送。

来自docs

要正确使用 max_id,应用程序对时间线端点的第一个请求应该只指定一个计数。在处理此响应和后续响应时,请跟踪收到的最低 ID。此 ID 应作为下一个请求的 max_id 参数的值传递,这将只返回 ID 小于或等于 max_id 参数值的推文。请注意,由于 max_id 参数包含在内,因此实际上会再次返回匹配 ID 的 Tweet,如下图所示:

在此处输入图像描述

使用Twython

from twython import Twython

twitter = Twython(APP_KEY, access_token=ACCESS_TOKEN)

# Initial request
result = twitter.search(q='stackoverflow', count=100)

# Get max_id of results
next_max_id = result['search_metadata']['next_results'].split('max_id=')[1].split('&')[0]
# Use max_id in next request 
result = twitter.search(q='stackoverflow', count=100, max_id=next_max_id)
于 2016-03-26T14:25:51.200 回答