【问题标题】:Is it possible to use Tweepy's filter function without the track parameter?没有track参数是否可以使用Tweepy的过滤功能?
【发布时间】:2020-06-30 15:41:57
【问题描述】:

我正在使用 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()

【问题讨论】:

  • 什么是完整的回溯/错误信息?根据tweepy docstwitter docs,这个参数是可选的,所以它应该可以工作。
  • 如果我输入stream.filter(languages=['el']),我得到406作为响应(没有别的),根据Twitter API响应列表网站列表意味着Not Acceptable

标签: python python-3.x twitter tweepy


【解决方案1】:
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。

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多