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

Python 使用StreamListener将twitter用户信息保存到文件中,python,json,twitter,tweepy,twitter-streaming-api,Python,Json,Twitter,Tweepy,Twitter Streaming Api,我想在我的文件中保存twitter用户信息,如姓名、状态、tweet(首选json、txt、csv或任何其他json或文本)。我试过这个代码和其他类似的代码,但都不起作用。大家看一下下面的代码,并建议我应该做哪些更改 import time from tweepy import Stream from tweepy import OAuthHandler from tweepy.streaming import StreamListener import os import json ckey

我想在我的文件中保存twitter用户信息,如姓名、状态、tweet(首选json、txt、csv或任何其他json或文本)。我试过这个代码和其他类似的代码,但都不起作用。大家看一下下面的代码,并建议我应该做哪些更改

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'])
导入时间
从tweepy导入流
从tweepy导入OAuthHandler
从tweepy.streaming导入StreamListener
导入操作系统
导入json
ckey='***********'
消费者秘密=“************”
访问令牌密钥='***********'
访问令牌密钥='***********'
start_time=time.time()#获取系统时间
关键词_list=['twitter']#跟踪列表
#侦听器类重写
类侦听器(StreamListener):
定义初始时间(自身、开始时间、时间限制=60):
self.time=开始时间
self.limit=时间限制
def on_数据(自身、数据):
while(time.time()-self.time)
当我运行下面的代码时,会出现错误-
数据失败,'function'对象没有属性'\uu 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'])
导入时间
从tweepy导入流
从tweepy导入OAuthHandler
从tweepy.streaming导入StreamListener
导入操作系统,系统
导入json
ckey='***'
消费者秘密=“***”
访问令牌密钥='***'
访问令牌密钥='***'
开始时间=time.time()
类侦听器(StreamListener):
定义初始时间(自身、开始时间、时间限制=300):
self.time=开始时间
self.limit=时间限制
def on_数据(自身、数据):
while(time.time()-self.time)
我建议您不要将钥匙包含在问题中。另外,您的try,except部分涵盖了太多的命令。尽量减少它,以便您可以正确地调试它。您使用的是哪个Python版本?我使用的是2.7.3,execption可能是因为Try blockFYI-我复制了错误,但代码看起来是正确的。然后尝试为Python3修改它,但在运行时遇到了一个已知的错误,其中流缓冲区返回字节,但用字符串初始化。也许可以尝试一种不同的API,比如Joel Grus在其著作《从头开始的数据科学》中演示的twython(),请参见can you update上的代码,以准确跟踪错误。