2016-07-09 4 views
1

TweepyとStreming APIを使用してTwitterからデータを取得するこのPythonコードは、1000個の結果(1000個のツイートデータ)を検出した時点で停止します。 正常に動作しますが、PyCharmで実行しようとすると結果の一部が切り捨てられるという問題があります。コードはつぶやきのすべてのデータ(ID、テキスト、Author ecc)を返すので、データが非常に多く生成され、ソフトウェアが壊れてしまいます。だから私は、Twitterのデータの一部だけのフィールドを取得するためにコードを変更TEたいと思います(例えばのために。私はつぶやきのテキストのみ、著者、日付必要)任意の提案が高く評価され をTweepyストリーミングフィルタフィールド

# 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 
ACCESS_TOKEN = '' 
ACCESS_SECRET = '' 
CONSUMER_KEY = '' 
CONSUMER_SECRET = '' 


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() #SEMPLICE TWITTER STREAMING 

iterator = twitter_stream.statuses.filter(track="Euro2016", language="en") #tWITTER STREAMING IN BASE AD UNA TRACK DI RICERCA E AL LINGUAGGIO PER ALTRI SETTAGGI VEDERE https://dev.twitter.com/streaming/overview/request-parameters 
#PER SETTARE PARAMETRI RICERCA https://dev.twitter.com/streaming/overview/request-parameters 


# Print each tweet in the stream to the screen 
# Here we set it to stop after getting 1000 tweets. 
# You don't have to set it to stop, but can continue running 
# the Twitter API to collect data for days or even longer. 
tweet_count = 1000 #SETTAGGIO DI QUANTI RISULTATI RESTITUIRE 
for tweet in iterator: 
    tweet_count -= 1 
    # Twitter Python Tool wraps the data returned by Twitter 
    # as a TwitterDictResponse object. 
    # We convert it back to the JSON format to print/score 
    print(json.dumps(tweet)) 

    # The command below will do pretty printing for JSON data, try it out 
    # print json.dumps(tweet, indent=4) 

    if tweet_count <= 0: 
     break 

答えて

1

私はこれをPyCharm上で1000個のつぶやきに問題なく実行できました。だから、別のコンピュータでこれを実行するか、既存のシステムに問題があるかどうか調べてみてください。

結果はあなたが個々の要素にアクセスするために必要なのは

for tweet in iterator: 
    tweet_count -= 1 
    #access the elements such as 'text','created_at' ... 
    print tweet['text'] 
+0

私PyCharmが1000件のツイートのすべてのデータを出力しますが、プロセスが終了したとき、私は上にスクロールしてみてください以下のようなものです、Pythonの辞書です私はメモリソフトウェアのようにすべてのデータを保持することができなかったと私はそれを理解することができます切り捨てられているデータを見つける!さらに、16 GBのRAMを搭載したノートブックのRAMには問題はありません。しかし、どうすればよいのでしょうか。私は、列 "user"の中にネストされている列 "screen_name"を取得したいですか? –

+0

@AndreaAngeli構造は辞書の辞書です。 'screen_name'にアクセスするには' print tweet ['user'] ['screen_name'] ' –