我正在构建一个node.js应用程序,它打开了与Twitter Streaming API(v1.1)的连接
我想将多个关键字(主题标签和单词)过滤为单独的查询。我最初的想法是拥有多个公共流。
但是,据我所知,每个应用程序和每个IP地址只能与Twitter流式api建立一个开放式连接,Twitter鼓励我们提出创造性的解决方案来获得我们想要的东西。
所以我的问题是:
如果我没有使用过滤器进行流式传输,例如使用statuses/sample(我认为是1%)并使用自定义javascript来过滤输出,如果我使用过滤的API方法,我会得到相同的推文吗?即track ='twitter')。
编辑:我创建了一个解释这个的图表:
如您所见,我想知道两个输出是否相同。我怀疑它们不会是因为虽然两个输出实际上都是相同的过滤器,但是一个来源是1%的样本,也许另一个来源是100%的样本,但只提供1%的推文。
有人可以澄清两个输出是否相同?
谢谢。
答案 0 :(得分:2)
根据Twitter流式api规则,如果您跟踪的关键字不超过整个全局流量的1%,您将收到所有数据(由于网络问题,某些推文可能会丢失,但这并不重要) 。这被称为花园软管(firehose是一种特殊的过滤器,可以为您提供所有数据,但它是通过第三方提供的付费服务,例如http://datasift.com/)
因此,如果通过公开信息流过滤推文,那么除非您的关键字设置太宽,否则它也会成为自定义过滤器的一部分。
通过使用自定义过滤器,您可以跟踪多个搜索关键字,如果您错过了某些数据,因为您的关键字设置过于宽泛,Twitter会发送一个跟踪限制通知,指出您丢失了多少数据。
我建议您使用自定义过滤器并分析您从流中获得的内容以及您从twitter获得相同关键字的结果。当你开始从twitter获得跟踪限制通知时,是时候将你的关键字集拆分成块并通过从不同的机器运行它们开始通过不同的流式传输流。
过滤流的详细信息如下(摘自官方网站https://dev.twitter.com/docs/api/1.1/post/statuses/filter)
返回与一个或多个过滤谓词匹配的公共状态。可以指定多个参数,允许大多数客户端使用与Streaming API的单个连接。支持GET和POST请求,但是参数太多的GET请求可能会导致请求因URL长度过长而被拒绝。使用POST请求来避免长URL。
默认访问级别最多允许400个跟踪关键字,5,000个跟随用户ID和25个0.1-360度位置框。如果您需要提升对Streaming API的访问权限,您应该在这里探索我们的Twitter数据合作伙伴提供商。
答案 1 :(得分:2)
我想用我的调查结果回答我的问题。
我在同一时间框架内并排测试并得出结论,自定义过滤器方法虽然支持多个过滤器但却没有提供足够的推文来创建足够有趣的可视化。
我认为使用并发过滤器获得更有趣的东西的唯一方法是查看其他方法,但我想知道它是否不可能。也许与第三方。
我附上了可视化跟踪'barackobama'的屏幕截图。左边是自定义过滤器,右边是状态/过滤器。
答案 2 :(得分:1)
statuses/filter
api对所有推文进行操作,而不是statuses/sample
返回的那些推文,您可以通过查看他们的推文ID来判断:示例推文都来自特定的时间窗口。因此,从毫秒分辨率的创建时间开始,您可以确定filter
返回sample
之外的推文。
有关从推文ID和示例推文的时间窗口获取创建时间的更多详细信息,请参阅此帖子:http://blog.falcondai.com/2013/06/666-and-how-twitter-samples-tweets-in.html