首页 > 解决方案 > 没有track参数是否可以使用Tweepy的过滤功能?

问题描述

我正在使用 Tweepy 根据一些参数直播推文。

以下示例可以正常工作,因为它返回包含单词“python”的所有实时推文:

stream.filter(track=['python'])

但是,我想在使用其他过滤流的方式(例如语言)时获取所有实时推文。例如,以下示例应该允许我获取所有希腊推文:

stream.filter(track=['*'], languages=['el'])

不幸的是,这会返回所有包含该*符号的希腊推文。

如果我输入:

stream.filter(languages=['el']) 

我得到一个406错误。

所以,我的问题是:

我可以删除track参数以使用 Tweepy 获取所有实时推文吗?有没有其他方法可以根据其他参数获取所有推文?


编辑:我知道这stream.sample()是一个选择。问题是,如果我输入:

stream.sample(languages=['en'])

我收到很多推文,但如果我输入:

stream.sample(languages=['el'])

流很慢。即,我可能每分钟收到一条推文。我想这与推文的采样方式以及样本的大小有关。所以,我在问是否有更好的方法来实现我想要的,可能不使用stream.sample().

标签: pythonpython-3.xtwittertweepy

解决方案


stream.filter(follow=follow, track=track, locations=location)

必须提供follow(推特 ID 列表)、track(关键字列表)位置框location(来自某个地区的推文)。
您可以提供多个它将充当逻辑OR.

合乎逻辑的步骤是指定一个覆盖整个地球的位置框。可悲的是,这只流式传输了暴露其地理位置信息的用户的推文。

所以这意味着你真正能做的就是这样的事情:

stream.filter(follow=follow, track=["a", "b", "c", ...], locations=[0, -90, 360, 90], languages=['el'])

track参数接受最多 400 个关键字的列表。您可以搜索您的语言中最常用的单词列表并在那里提供。

请记住,由于将要到达的推文数量庞大,您不会收到所有推文。这将是所有推文的 1%,您不能再低了。您必须付费才能访问高级 API。


推荐阅读