【问题标题】:How do I query to get all the retweets from Twitter streaming API?如何查询以获取来自 Twitter 流 API 的所有转推?
【发布时间】:2015-11-23 07:16:21
【问题描述】:

我创建了一个流式 API 来捕获来自一个帐户的所有转推。我把所有结果都保存在MongoDB中。

这是代码

class StdOutListener(StreamListener):

    def on_data(self, data):
        mydata = json.loads(data)
        db.raw_tweets.insert_one(mydata)
        return True

    def on_error(self, status):
        mydata = json.loads(status)
        db.error_tweets.insert_one(mydata)


if __name__ == '__main__':

    #This handles Twitter authetification and the connection to Twitter Streaming API
    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    stream = Stream(auth, l)

    #This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby'
    stream.filter(follow=['121817564'])

我相信我几乎捕捉到了所有东西。 Twitter 上有一条有 5000k 转推的推文,但是当我在 MongoDb 上查询时,我只得到 1,300 条记录。我不确定我是否错过了什么?我不希望得到完全相同的数字,但至少应该足够接近。

这是我在 MongoDB 中使用的查询。

db.getCollection('raw_tweets').find({'retweeted_status.id_str':'636345902915911680'}).count()

也许我的查询不正确,无法获得所有转推?

【问题讨论】:

    标签: mongodb twitter


    【解决方案1】:

    您的 mongoDB 查询对我来说看起来不错。 现在可能有很多可能导致错过转发的原因:

    • twitter 流 api 保证您将获得过滤器中指定的每条推文,您应该检查 twitter 返回的限制消息以检查您是否缺少某些推文。
    • 您在代码中提供的过滤器用于关注用户,而不是“跟踪”关键字过滤器。
    • 很可能您缺少在开始跟踪之前创建的转推。 (流式 API 不会传递在您声明收听时间之后创建的推文)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2011-05-25
      • 2014-10-23
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      相关资源
      最近更新 更多