试图将Twitter流数据存储到MongoDB中。该代码几乎是http://stats.seandolinar.com/collecting-twitter-data-storing-tweets-in-mongodb/的副本,但始终显示错误。如果我试图打印出数据,它会显示json文件不断增长,但是尽管while循环有时间限制,它似乎永远不会结束。!
class listener(StreamListener):
def __init__(self, start_time, time_limit=60):
self.time = start_time
self.limit = time_limit
def on_data(self, data):
while (time.time() - self.time) < self.limit:
try:
tweet = json.loads(data)
client = MongoClient('localhost', 27017)
db = client['twitter_db']
collection = db['twitter_collection']
collection.insert_many(tweet)
return True
except BaseException, e:
print 'failed ondata,', str(e)
time.sleep(5)
pass
exit()
def on_error(self, status):
print statuses
答案 0 :(得分:3)
您使用错误的方法将文档插入到集合中。在您的情况下,json.loads
会返回不是list
的字典,因此您需要使用insert_one
方法插入该单个文档,因为insert_many
只插入一个可迭代的文档。< / p>