2017-01-09 12 views
1

私はSpark Streamingの初心者です。 私は機能しているコードをテストしていますが、それ以外の何かをしたいです。私は自分のアカウントで最も人気のある2つのハッシュタグだけを取り出したいと思っています。Tweepy-最も人気のある2つのハッシュタグを取得します

class StdOutListener(StreamListener): 

    def on_data(self, data): 
     print data 
     return True 

    def on_error(self, status): 
     print status 


if __name__ == '__main__': 

    l = StdOutListener() 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    stream = Stream(auth, l) 
    stream.filter(track=['python']) 

どうすればいいですか?

ありがとうございます。

+0

[tweepyでのフィルタリング](http://stackoverflow.com/questions/28497731/filtering-in-tweepy)の可能な複製。これは「アカウント上の2つのハッシュタグの上位2つ」の問題には対処しませんが、ボイラープレートの上にこれを多く書くことをユーザーに要求することは過度であると感じています。 – Luigi

答えて

0

可能な解決策は、以下の(完全な例here)です:

class StdOutListener(StreamListener): 

    def on_data(self, data): 
     print(data) 
     return True 

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


if __name__ == '__main__': 
    hashtags_dict = {} 

    l = StdOutListener() 
    auth = OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    api = tweepy.API(auth) 

    tweets = api.user_timeline(screen_name='<your_screen_name',count=200) 

    for tweet in tweets: 
     hashtags = tweet.entities.get('hashtags') 
     for hashtag in hashtags: 
      if hashtag['text'] in hashtags_dict.keys(): 
       hashtags_dict[hashtag['text']] += 1 
      else: 
       hashtags_dict[hashtag['text']] = 1 

    print(sorted(hashtags_dict, key=hashtags_dict.get, reverse=True)[:2]) 

私はあなたのスクリプトに追加した新しい部品があなたの口座から200件のつぶやきを取得し、相対的なハッシュタグを取得するための各つぶやきをループします。 各ハッシュタグはdict(hashtags_dict)のキーとして追加され、値として、ハッシュタグが何回使用されたかを指定します。

最後に、dictの2つのキーを最大値で取得します。これは、アカウントで最も一般的な2つのハッシュタグに対応しています。

同時に最大200件のツイートを取得できます。これは最大許容数です。すべてのツイートを見るにはscript

私に教えてください。

関連する問題