Фильтрация твипового потока по ключевому слову и пользователю - PullRequest
0 голосов
/ 07 мая 2020

Я пытался использовать tweepy для потоковой передачи твитов и просто их распечатать. Я хочу фильтровать твиты по пользователю и по ключевому слову, но, похоже, это не работает. Когда я использую следующий код, я получаю все твиты от всех пользователей, использующих ключевое слово «привет», когда я хочу его только от определенного c пользователя / пользователей. Однако, когда я не фильтрую по ключевому слову, я получаю все входящие твиты от определенного c пользователя / пользователей.

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

1 Ответ

0 голосов
/ 07 мая 2020

Попробуйте вот это. Это может вам помочь.

Импортировать библиотеки

    import re
    import tweepy
    from tweepy import OAuthHandler

Generi c Класс 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()
...