2017-01-09 4 views
1

Ich bin ein Anfänger in Spark Streaming. Ich teste einen Code, der funktional ist, aber ich möchte etwas anderes damit machen. Ich möchte nur die beliebtesten zwei Hashtags in meinem Konto abrufen.Tweepy - rufen Sie die beliebtesten zwei Hashtags

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

Wie kann ich es tun?

Vielen Dank.

+0

Mögliches Duplikat von [Filterung in Tweepy] (http://stackoverflow.com/questions/28497731/filtering-in-tweepy). Dies betrifft nicht das Problem "Die zwei obersten Hashtags in meinem Konto", aber ich habe das Gefühl, dass es sehr übertrieben ist, die Benutzer zu bitten, so viel zu schreiben. – Luigi

Antwort

0

Eine mögliche Lösung ist die folgende (vollständiges Beispiel 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]) 

Der neue Teil, das ich das Skript hinzugefügt haben, bekommt 200 Tweets von Ihrem Konto und Schleifen jedem Tweet für die relativen Hashtags zu bekommen. Jeder Hashtag wird als Schlüssel in einem dict (hashtags_dict) hinzugefügt und als Wert gebe ich an, wie oft der Hashtag verwendet wurde.

Am Ende, bekomme ich die zwei Schlüssel im dict mit dem maximalen Wert, das entspricht den beliebtesten zwei Hashtags in Ihrem Konto.

Sie können nur 200 Tweets zur gleichen Zeit erhalten, das ist die maximal zulässige Anzahl. Wenn Sie alle Tweets sehen wollen, schauen Sie sich script

Lassen Sie es mich wissen.