2016-07-10 7 views
-1

多分あなたが私を助けることができます。この次のpythonコードは、Twitterのストリーミングデータを取得し、1000個のツイートデータがあると停止します。それは動作しますが、タブによって区切られたフィールド "created_at、screen_name、text"を返します。代わりに私はJSON形式でデータを取得したいと思います。 JSONでフォーマットされたデータを取得するためにコードを設定するにはどうすればよいですか?TwitterのストリーミングフォーマットJSON出力

# Import the necessary package to process data in JSON format 
try: 
    import json 
except ImportError: 
    import simplejson as json 

# Import the necessary methods from "twitter" library 
from twitter import Twitter, OAuth, TwitterHTTPError, TwitterStream 

# Variables that contains the user credentials to access Twitter API 


CONSUMER_KEY = '7pWHWtYlXM9ayJfUKv2F8v84B' 
CONSUMER_SECRET = 'Dfcx10Px77Ggn0qGbCHc4TZC7M2IHsXpqk9CaGiCLzcr9VMX5n' 
ACCESS_TOKEN = '245080367-zuLrIbxblOnocashgku9dsmDKgy3R7uU0VCTIRDx' 
ACCESS_SECRET = 'wCx5ufD9Zft46hVjieLdv0af7p9DxUTsPgge9Zm2qelR9' 

oauth = OAuth(ACCESS_TOKEN, ACCESS_SECRET, CONSUMER_KEY, CONSUMER_SECRET) 

# Initiate the connection to Twitter Streaming API 
twitter_stream = TwitterStream(auth=oauth) 

# Get a sample of the public data following through Twitter 
#iterator = twitter_stream.statuses.sample() 

iterator = twitter_stream.statuses.filter(track="Euro2016", language="fr") 

tweet_count = 1000 
for tweet in iterator: 
    tweet_count -= 1 


    print (tweet['created_at'],"\t",tweet['user']['screen_name'],"\t",tweet['geo'], "\t",tweet['text']) 


    if tweet_count <= 0: 
     break 
+0

* *「タブで区切られた 『』それは動作しますが、フィールドを返す」のcreated_at、SCREEN_NAME、およびテキストを - と?それはまさにあなたが求めるものです。 – jonrsharpe

+0

@jonrsharpe出力データをJSON形式の –

+0

にしたいのですが、そのようにコードを変更してください。ただし、書き込まれた内容が正確であれば驚かないでください。質問ありますか?たぶん[ask]を読んでください。 – jonrsharpe

答えて

1

あなたはtweepyをインポート(あなたがピップで最初にそれをインストールする必要があります)とlistener classはJSON形式でデータを出力することができるようにオーバーライドすることができます。次に例を示します。

from tweepy import Stream 
from tweepy.streaming import StreamListener 

#Listener Class Override 
class listener(StreamListener): 
    def on_data(self, data): 
     try: 
      tweet = json.loads(data) 
      with open('your_data.json', 'a') as my_file: 
       json.dump(tweet, my_file) 
     except BaseException: 
      print('Error') 
      pass 

    def on_error(self, status): 
     print(statuses) 

my_listener=listener() 
twitterStream = Stream(oauth, my_listener) #Inizialize Stream object 

あなたがここにtweepy詳細を読むことができます:http://docs.tweepy.org/en/v3.4.0/streaming_how_to.html