使用 StreamListener 将 Twitter 用户信息保存到文件中

save twitter user information into a file using StreamListener

伙计们,我想在我的文件中保存 Twitter 用户信息,例如姓名、状态、推文(首选 json、txt、csv 或任何其他 json 或文本)。我尝试了这段代码和其他一些类似的代码,但其中 none 行得通。伙计们看看下面的代码并建议我应该做哪些改变??

import time
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import os
import json

ckey = '**********'
consumer_secret = '**********'
access_token_key = '**********'
access_token_secret = '**********'

start_time = time.time() #grabs the system time
keyword_list = ['twitter'] #track list

#Listener Class Override
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:
                all_data = json.loads["text"]
                username = all_data["user"]["name"]
                tweets = all_date["user"]["statuses"]
                saveFile = open('raw_tweets29.json', 'a')
                saveFile.write(username)
                saveFile.write('\n')
                saveFile.close()

                return True
            except BaseException, e:
                print 'failed ondata,', str(e)
                time.sleep(5)
                pass
        exit()

    def on_error(self, status):
        print statuses

auth = OAuthHandler(ckey, consumer_secret) #OAuth object
auth.set_access_token(access_token_key, access_token_secret)
twitterStream = Stream(auth, listener(start_time, time_limit=20))
twitterStream.filter(track=['twitter'])

当我 运行 下面的代码出现错误时 -
failed ondata, 'function' object has no attribute '__getitem__'

我将不胜感激你能给我解决这个问题的任何帮助

我犯了一些错误,现在我发现不需要临时变量 'text' 我需要做的是加载实际数据。 还有一件事需要编码。 感谢大家抽出时间。

import time
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import os,sys
import json

ckey = '***'
consumer_secret = '***'
access_token_key = '***'
access_token_secret = '***'

start_time = time.time()

class listener(StreamListener):

    def __init__(self, start_time, time_limit=300):

        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)
                user_name = tweet['user']['name']
                tweet_count = tweet['user']['statuses_count']
                text = tweet['text']
                saveFile = open('user_tweets29.json', 'a')
                saveFile.write(text.encode('utf8'))
                saveFile.write('\n')
                saveFile.close()

                return True
            except BaseException, e:
                print 'failed ondata,', str(e)
                time.sleep(5)
                pass
        exit()

    def on_error(self, status):
        print statuses

auth = OAuthHandler(ckey, consumer_secret)
auth.set_access_token(access_token_key, access_token_secret)
twitterStream = Stream(auth, listener(start_time, time_limit=60))
twitterStream.filter(track=['twitter'])