2017-01-09 31 views
1

我是Spark Streaming的初學者。 我正在測試一些功能正常的代碼,但我想用它做一些其他的事情。我只想檢索我的帳戶中最受歡迎的兩個哈希標籤。Tweepy-檢索最流行的兩個井號標籤

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)。這並沒有解決「我的帳戶中最重要的兩個主題標籤」問題,但我有一種感覺,要求用戶在樣板上寫這些內容太過分了。 – 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個鳴叫和循環每個鳴叫爲獲得相對井號標籤。 每個hashtag將被添加爲一個字典(hashtags_dict)中的關鍵字,並且作爲值,我將該hashtag被使用了多少次。

最後,我得到了dict中最大值的兩個鍵,它對應於您帳戶中最受歡迎的兩個hashtags。

您只能同時獲得200條推文,這是允許的最大計數。如果你想讓所有的推文看看這個script

讓我知道。