我有一个脚本,它使用 twitter streaming api 将短语(例如“python”)的传入推文存储到数据库表“A”中。随后,另一个脚本使用 twitter search api 搜索相同的短语。并将结果存储到表“B”中。我的问题是为什么“A”中有些推文不在“B”中,反之亦然。
我可以想到在“B”中而不是在“A”中包含推文的一个原因:
“A”仅包含流 api 启动后发布的推文,而搜索 api 返回上周的结果。如果流式API已经运行超过一周,那么“B”中不能有任何不在“A”中的推文。
我知道在“A”中包含一些推文而不是在“B”中的两个原因:
- 搜索 API 仅返回上周的结果,而流式处理 API 返回所有内容
- 搜索 API 仅返回部分结果,而不是全部结果,因为其重点不在于完整性。
我想确认一下我的理解是否正确。
最佳答案
对于“B”而不是“A”,你是正确的。您所包含的搜索 API 链接就是一个重要的迹象:
It allows queries against the indices of recent or popular Tweets...
对于“A”而不是“B”,你也是正确的,但有一些小错误。
- Streaming API 不会返回所有内容,它只会返回 1% 的推文总数。 1% 过滤器是在 Twitter 内部完成的, 没有任何迹象表明它是如何完成的。不久前有一个关于修复 1% 以使其成为真正的 1% 的公告,但我似乎找不到我阅读它的链接。
- 使用 Streaming API 时,您还会受到以下问题的影响(更常见):
- 公共(public)直播限制(达到 1%)
- 失速警告(警告)
其他几个取决于您的使用 https://dev.twitter.com/streaming/overview/messages-types
关于python - 为什么有些推文在搜索 api 中而不是在流 api 中,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32689558/