使用Tweepy查找针对特定关键字的热门推文

时间:2017-03-02 15:16:16

标签: python twitter tweepy hashtag trending

忍受我,因为我还在学习Python ..

我希望能够看到特定主题标签的最热门推文。我能够找到趋势推文,我能够找到带有特定主题标签的推文,但在尝试将这两个标签结合起来时我感到很茫然。

import tweepy

CONSUMER_KEY = 'key'
CONSUMER_SECRET = 'secret'
OAUTH_TOKEN = 'key'
OAUTH_TOKEN_SECRET = 'secret'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

api = tweepy.API(auth)
trends = api.trends_place(1)

search_hashtag = tweepy.Cursor(api.search, q='hashtag').items(5000)

for tweet in search_hashtag:
    print json.dumps(tweet)

print json.dumps(trends, indent=1)

这就是我现在所做的工作..

谢谢!

2 个答案:

答案 0 :(得分:1)

来自:https://dev.twitter.com/rest/public/search

  

它允许针对最近或流行推文的索引进行查询,其行为与Twitter移动或网络客户端(如Twitter.com搜索)中提供的搜索功能类似,但不完全相同。 Twitter Search API搜索过去7天内发布的最近推文的样本。

因此,你几乎已经得到了你想要的东西。这些实际上是特定主题标签/主题的热门推文。

https://dev.twitter.com/rest/reference/get/trends/place只是为了获取特定位置的趋势主题,但从您的问题来看,您似乎想要按某个特定主题进行搜索,而不是当前正在搜索的主题

答案 1 :(得分:0)

如果我说“我希望能够看到特定主题标签的最新趋势推文”时理解正确。您的意思是您想要那些带有某些最热门(受欢迎)的主题标签的推文。

好吧,考虑一下,我想到了一个主意。您可以使用hastag作为查询,然后在收集的推文中搜索哪些推文数量最多。

代码可能看起来像这样:

import tweepy

CONSUMER_KEY = 'key'
CONSUMER_SECRET = 'secret'
OAUTH_TOKEN = 'key'
OAUTH_TOKEN_SECRET = 'secret'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

api = tweepy.API(auth)
trends = api.trends_place(1)

search_hashtag = tweepy.Cursor(api.search, q='hashtag', tweet_mode = "extended").items(5000)

for tweet in search_hashtag:
        if 'retweeted_status' in tweet._json: 
            full_text = tweet._json['retweeted_status']['full_text']
        else:
            full_text = tweet.full_text
                        
        tweets_list.append([tweet.user.screen_name,
                            tweet.id,
                            tweet.retweet_count, # What you are interested of
                            tweet.favorite_count, # Maybe it is helpfull too
                            full_text,
                            tweet.created_at,
                            tweet.entities
                           ])
tweets_df = pd.DataFrame(tweets_list, columns = ["screen_name", "tweet_id",
                                                  "nº rt", 
                                                  "nº replies",
                                                  "text",
                                                  "created_at", 
                                                  "entities"])
# In a data frame format you can sort the tweets by the nº of rt and get the top one
tweets_df.to_json()

如您所见,我使用tweet_mode = "extended"是因为您可能对整个文本感兴趣(默认情况下,Twitter API会截断文本)。此外,您希望将回复数与某条推文的转发数结合使用,以获取最新信息。 希望你觉得它有用! 编码愉快!