【问题标题】:Filtering tweepy stream by keyword and user按关键字和用户过滤 tweepy 流
【发布时间】:2020-05-08 03:19:51
【问题描述】:

我一直在尝试使用 tweepy 流式传输推文并打印它们。我想按用户和关键字过滤推文,但它似乎不起作用。当我使用以下代码时,当我只希望来自特定用户/用户时,我会使用关键字“hi”从所有用户那里获取所有推文。但是,当我不按关键字过滤时,我会从特定用户/用户那里获得所有传入的推文。

from __future__ import absolute_import, print_function

from tweepy import OAuthHandler, Stream, StreamListener

# Go to http://apps.twitter.com and create an app.
# The consumer key and secret will be generated for you after
consumer_key = "..."
consumer_secret = "..."

# After the step above, you will be redirected to your app's page.
# Create an access token under the the "Your access token" section
access_token = "..."
access_token_secret = "..."


class StdOutListener(StreamListener):
    """ A listener handles tweets that are received from the stream.
    This is a basic listener that just prints received tweets to stdout.
    """

    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=['hi'], follow=["userID"])

【问题讨论】:

    标签: python python-3.x twitter tweepy


    【解决方案1】:

    试试这个东西。它可能会对您有所帮助。

    导入库

        import re
        import tweepy
        from tweepy import OAuthHandler
    

    用于情绪分析的通用 Twitter 类。

    class TwitterClient(object):
    
        # Class constructor or initialization method
        def __init__(self):
    
            # keys and tokens from the Twitter Dev Console
            consumer_key = ' '
            consumer_secret = ' '
            access_token = ' '
            access_token_secret = ' '
    
        # attempt authentication
    try:
        # create OAuthHandler object
        self.auth = OAuthHandler(consumer_key, consumer_secret)
        # set access token and secret
        self.auth.set_access_token(access_token, access_token_secret)
        # create tweepy API object to fetch tweets
        self.api = tweepy.API(self.auth)
    except:
        print("Error: Authentication Failed")
    
    
    # Main function to fetch tweets and parse them.
    
    
     def get_tweets(self, query, languages=["en"], count=10):
            # empty list to store parsed tweets
            tweets = []
    
            try:
                # call twitter api to fetch tweets
                fetched_tweets = self.api.search(q=query, count=count)
    
                # parsing tweets one by one
                for tweet in fetched_tweets:
                    # empty dictionary to store required params of a tweet
                    parsed_tweet = {}
    
                    # saving text of tweet
                    parsed_tweet['text'] = tweet.text
                    # saving sentiment of tweet
                    parsed_tweet['sentiment'] = self.get_tweet_sentiment(tweet.text)
    
                    # appending parsed tweet to tweets list
                    if tweet.retweet_count > 0:
                        # if tweet has retweets, ensure that it is appended only once
                        if parsed_tweet not in tweets:
                            tweets.append(parsed_tweet)
                    else:
                        tweets.append(parsed_tweet)
    
                    # return parsed tweets
                return tweets
    
            except tweepy.TweepError as e:
                # print error (if any)
                print("Error : " + str(e))
    
    
    def main():
        searchTerm = input("Type keyword you need to analyze : ")
        # creating object of TwitterClient Class
        api = TwitterClient()
        # calling function to get tweets
        #tweets = api.get_tweets(query=searchTerm, count=200)
        tweets = tweepy.Cursor(api.search, q=searchTerm, lang="English")
    
    main()
    

    【讨论】:

    • 感谢您的回复,但我认为您误读了问题...我不需要情绪分析方面的帮助。我需要帮助流式传输按用户和搜索词过滤的推文
    猜你喜欢
    • 2015-04-26
    • 2022-01-19
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2015-03-20
    • 2021-01-04
    • 1970-01-01
    相关资源
    最近更新 更多