Python 我如何使用Twitter上的推文';s流式api并将其存储在mongodb中

Python 我如何使用Twitter上的推文';s流式api并将其存储在mongodb中,python,mongodb,twitter,pymongo,tweepy,Python,Mongodb,Twitter,Pymongo,Tweepy,我需要开发一个应用程序,让我跟踪推特,并将它们保存在mongodb中,用于一个研究项目(正如你们可能会收集到的,我是一个noob,所以请耐心等待)。我发现这段代码通过我的终端窗口发送推文: import sys import tweepy consumer_key="" consumer_secret="" access_key = "" access_secret = "" auth = tweepy.OAuthHandler(consumer_key, consumer_secret

我需要开发一个应用程序,让我跟踪推特,并将它们保存在mongodb中,用于一个研究项目(正如你们可能会收集到的,我是一个noob,所以请耐心等待)。我发现这段代码通过我的终端窗口发送推文:

import sys
import tweepy

consumer_key=""
consumer_secret=""
access_key = ""
access_secret = "" 


auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)

class CustomStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        print status.text

    def on_error(self, status_code):
        print >> sys.stderr, 'Encountered error with status code:', status_code
        return True # Don't kill the stream

    def on_timeout(self):
        print >> sys.stderr, 'Timeout...'
        return True # Don't kill the stream

sapi = tweepy.streaming.Stream(auth, CustomStreamListener())
sapi.filter(track=['Gandolfini'])
是否有一种方法可以修改这段代码,从而将推文发送到我的mongodb数据库,而不是让推文在我的屏幕上流动

谢谢这里有一个例子:

import json
import pymongo
import tweepy

consumer_key = ""
consumer_secret = ""
access_key = ""
access_secret = ""

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)


class CustomStreamListener(tweepy.StreamListener):
    def __init__(self, api):
        self.api = api
        super(tweepy.StreamListener, self).__init__()

        self.db = pymongo.MongoClient().test

    def on_data(self, tweet):
        self.db.tweets.insert(json.loads(tweet))

    def on_error(self, status_code):
        return True # Don't kill the stream

    def on_timeout(self):
        return True # Don't kill the stream


sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
sapi.filter(track=['Gandolfini'])
这将把tweets写入mongodb
test
数据库,
tweets
集合


希望这能有所帮助。

我开发了一个简单的命令行工具,可以实现这一点


它允许使用流式API或搜索API。

注意:原始代码取自:是的,这似乎可行。非常感谢你。我想下一个问题是:我将如何修改您提供的脚本,以便不向本地mongodb发送推文,而是将推文发送到MongoLab上托管的远程db?有什么想法吗?再次感谢!当然,
pymongo.MongoClient
接受
host
port
参数。首先,代码就像一个符咒。我玩得很开心,谢谢你。如果我不想跟踪一个单词,而是想跟踪一个位置,我该怎么做?我尝试替换最后一行代码,使其读取sapi.filter(locations=['-74,40,-73,41']),但得到了一个断言错误。你知道我该怎么解决这个问题吗?谢谢<代码>位置参数应该是长度为4的列表,例如
['-74',40','-73',41']
。工作?是的。具体地说,它将最后一行更改为sapi.filter(位置=[-74,40,-73,41]),即在lat/long对周围没有恐慌引号。再次感谢。