Python 我如何使用Twitter上的推文';s流式api并将其存储在mongodb中
我需要开发一个应用程序,让我跟踪推特,并将它们保存在mongodb中,用于一个研究项目(正如你们可能会收集到的,我是一个noob,所以请耐心等待)。我发现这段代码通过我的终端窗口发送推文: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
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写入mongodbtest
数据库,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对周围没有恐慌引号。再次感谢。