Twitter Stream API 提供没有文本关键词的推文

问题描述

我开始通过流媒体 API 提取推文。但是,我注意到有些推文不包含我在文本中定义的关键词,但是,也有一些推文是例如对包含此类关键字的推文的回复

如何确保只考虑文本中包含该词的推文?

非常感谢您的帮助!

#Load packages and define parameters
import tweepy
key_words = ["xx"]

class TwitterStreamer():

    def __init__(self):
        pass

    def stream_tweets(self,twitter_data_title,key_words):
        listener = StreamListener(twitter_data_title)
        auth = tweepy.OAuthHandler(api_key,api_secret_key)
        auth.set_access_token(access_token,access_secret_token)
        stream = tweepy.Stream(auth,listener)
        stream.filter(track=key_words)


class StreamListener(tweepy.StreamListener):

    def __init__(self,twitter_data_title):
        self.fetched_tweets_filename = twitter_data_title

    def on_data(self,data):
        try:
            print(data)
        
            with open(self.fetched_tweets_filename,'a') as tf:
                tf.write(data)
            return True
        except BaseException as e:
            print("Error on_data %s" % str(e))
        return True
    
    def on_exception(self,exception):
        print('exception',exception)
        stream_tweets(twitter_data_title,key_words)    

    def on_error(self,status):
        print(status)
    
def stream_tweets(twitter_data_title,key_words):
    listener = StreamListener(twitter_data_title)
    auth = tweepy.OAuthHandler(api_key,api_secret_key)
    auth.set_access_token(access_token,access_secret_token)
    stream = tweepy.Stream(auth,listener)
    stream.filter(track=key_words)
    
    
if __name__ == '__main__':
    twitter_streamer = TwitterStreamer()
    twitter_streamer.stream_tweets(twitter_data_title,key_words)

解决方法

来自Twitter documentation

推文的文本和一些实体字段被视为匹配项。具体来说,会检查 Tweet 的文本属性、链接和媒体的 expand_url 和 display_url、主题标签的文本以及用户提及的 screen_name 是否匹配。

因此,如果您只想要文本与您提供的关键字相匹配的推文,则您必须自己删除那些文本中不包含您提供的关键字的推文。