Исключение условий поиска в Python и Tweepy?

#python #visual-studio #tweepy

#python #visual-studio #tweepy

Вопрос:

Я хочу выполнить поиск по #gaming, но исключить все твиты, в которых есть #stream . Я использую Python и Tweepy в коде Visual Studio. У меня есть приведенный ниже код, но при запуске он по-прежнему включает твиты с #stream . Я просмотрел правила фильтрации API Twitter, и вот что у него было. Кто-нибудь может помочь мне с моим кодом? Спасибо!

 import tweepy

auth = tweepy.OAuthHandler("CONSUMER_KEY", "CONSUMER_SECRET")
auth.set_access_token("ACCESS_TOKEN", "ACCESS_TOKEN_SECRET")

api = tweepy.API(auth)

user2 = api.me()
print(user2.name)

def main():
    search = ("#gaming -#stream")
    numberoftweets = 2
    for tweet in tweepy.Cursor(api.search, search).items(numberoftweets):
        try:
            tweet.favorite()
            tweet.retweet()
            api.create_friendship(tweet.user.id)
            print("Tweet Retweeted and followed")
        except tweepy.TweepError as e:
            print(e.reason)
        except StopIteration:
            break
main()
 

Ответ №1:

Правила поиска здесь и проверили ваши параметры поиска, и, похоже, они работают, поэтому неясно, где вы видите #stream . Требуется 10-15 секунд, чтобы получить 500 твитов и получить список хэштегов, но я запускал это несколько раз, и нет #stream . Если я удалю — from перед #stream, тогда хэштег будет в списке; работает, как ожидалось.

 import pandas as pd
search = ("#gaming -#stream")
numberoftweets = 500
tweets = tweepy.Cursor(api.search, search).items(numberoftweets)
df_hold_list = [pd.DataFrame([tweet._json.get('entities').get('hashtags')]) for tweet in tweets] # note brackets around json dictionary
df_hashtags = pd.concat(df_hold_list, axis=0).reset_index(drop=True)
df_hashtags.iloc[0]
hashtag_list = df_hashtags.stack().apply(lambda x: '' if pd.isnull(x) else x['text']).unique().tolist()
hashtag_list.sort()
print(hashtag_list)