【发布时间】: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()
也许我的查询不正确,无法获得所有转推?
【问题讨论】: