2015-08-29 1 views
2

Les gars, je veux enregistrer twitter info utilisateur comme nom, statuts, tweet dans mon fichier (soit json, txt, csv ou tout autre json ou texte sont préférés). J'ai essayé ce code et d'autres similaires mais aucun d'entre eux ne fonctionne. Les gars jettent un coup d'oeil au code ci-dessous et me suggèrent quels changements devrais-je faire ??enregistrer les informations de l'utilisateur twitter dans un fichier en utilisant StreamListener

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']) 

quand je lance sous le code cela me donne une erreur -
failed ondata, 'function' object has no attribute '__getitem__'

Je vous serais très reconnaissant de toute aide que vous pouvez me donner à travailler ce problème

+1

Je vous recommande de ne pas inclure vos clés dans la question. Aussi, votre essai, sauf la section couvre trop de commandes. Essayez de le réduire pour pouvoir le déboguer correctement. –

+0

Quelle version de Python utilisez-vous? –

+0

J'utilise 2.7.3, l'exécution peut être à cause de try bloc –

Répondre

1

que je fais une erreur, maintenant je comprendre qu'il n'y a pas besoin de variable texte 'texte' ce que je dois faire est de charger des données réelles. il y a encore une chose que require est l'encodage. remercie tout le monde pour votre temps.

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'])