【问题标题】:How to get tweets in real time from a user's timeline using Tweepy如何使用 Tweepy 从用户的时间线实时获取推文
【发布时间】:2019-10-21 14:35:22
【问题描述】:

我正在尝试从用户的时间线上实时提取推文。然后我想对这些推文进行一些分析。阅读文档后,我似乎需要为这个用例使用 tweepy.Stream 。我做了以下事情:

stream.filter(follow='25073877')

但 Twitter 的过滤器 API 声明如下:

  • 用户创建的推文。
  • 用户转发的推文。
  • 回复用户创建的任何推文。
  • 转发用户创建的任何推文。
  • 手动回复,无需按回复即可创建 按钮(例如“@twitterapi 我同意”)。

这似乎会返回大量与我的用例无关的推文。我是否必须使用这种方法,然后按屏幕名称过滤才能仅获取真实用户的推文?这似乎根本不对。

替代方案似乎是 api.user_timeline 类,但它不是流式 API。因此,我是否使用此 API 并每秒点击一次?我似乎找不到合适的例子来说明如何最好地完成我的用例。

【问题讨论】:

    标签: python twitter data-science tweepy


    【解决方案1】:

    是的,您需要按 screen_name 过滤,或者您可以检查它是否是转发。

    我不推荐第二种方法,因为您将获得更多的推文,因为您必须过滤掉您在之前的请求中已经收到的推文,而且如果您不这样做,您可能会达到 API 查询限制时间不正确。

    这就是过滤函数的签名:

        def filter(self, follow=None, track=None, is_async=False, locations=None,
                   stall_warnings=False, languages=None, encoding='utf8', filter_level=None)
    

    映射到这个Twitter API request

    这里是explanation of the parameters

    【讨论】:

    • 感谢您的确认。很遗憾您不能在 API 中应用这些过滤器,因为这对我来说似乎是一个非常常见的用例。如果我关注@realDonaldTrump,那么似乎我必须过滤潜在的 10,000 条推文才能获得他的一条推文?如果你想象他的每一条推文的转发比例。我做了一个测试并过滤了“RT @”,但即使这样也只覆盖了这种方法生成的推文的 50%。
    • 我的目标是实时监控影响者的各个帖子,但考虑到在这种情况下 API 返回的噪音量,我认为这样做不可行?有什么想法可以有效地扩大规模吗?
    • 您是否也从用户推文中获得转发?我会说你会得到他的转发和回复等。无论如何,我认为即使数据量很大,你也不应该能够处理它们。
    猜你喜欢
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2020-09-25
    • 2015-04-27
    • 1970-01-01
    • 2018-06-11
    • 2016-01-07
    相关资源
    最近更新 更多