Gestion de la recherche de L'API Tweepy

veuillez m'excuser s'il s'agit d'une répétition grossière d'une question déjà répondue ailleurs, mais je suis perdu sur la façon d'utiliser la fonction de recherche de l'API tweepy. Y a-t-il de la documentation disponible sur la façon de rechercher des tweets en utilisant le api.search() fonction?

y a-t-il un moyen de contrôler des fonctionnalités telles que le nombre de tweets retournés, le type de résultats, etc.?

Les résultats semblent max à 100 pour une raison quelconque.

l'extrait de code que j'utilise est comme suit

searched_tweets = self.api.search(q=query,rpp=100,count=1000)

18
demandé sur user3075934 2014-03-18 07:18:47

2 réponses

j'ai d'abord travaillé sur une solution basée sur Yuva Raj suggestion utilisation des paramètres supplémentaires dans faire des recherches/des tweets -max_id paramètre conjointement avec le id le dernier tweet est retourné à chaque itération d'une boucle qui vérifie également l'apparition d'un TweepError.

Cependant, j'ai découvert qu'il est plus simple de résoudre le problème en utilisant un tweepy.Cursor (voir tweepy curseur tutorial pour en savoir plus sur l'aide de Cursor).

le code suivant renvoie aux 1000 mentions les plus récentes de 'python'.

import tweepy
# assuming twitter_authentication.py contains each of the 4 oauth elements (1 per line)
from twitter_authentication import API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET

auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)

query = 'python'
max_tweets = 1000
searched_tweets = [status for status in tweepy.Cursor(api.search, q=query).items(max_tweets)]

mise à Jour: en réponse à André Petre'commentaire à propos de potentiels problèmes de consommation de mémoire avec tweepy.Cursor, je vais inclure ma solution originale, en remplacement de la liste d'énoncés simple compréhension utilisée ci-dessus pour calculer searched_tweets avec le code suivant:

searched_tweets = []
last_id = -1
while len(searched_tweets) < max_tweets:
    count = max_tweets - len(searched_tweets)
    try:
        new_tweets = api.search(q=query, count=count, max_id=str(last_id - 1))
        if not new_tweets:
            break
        searched_tweets.extend(new_tweets)
        last_id = new_tweets[-1].id
    except tweepy.TweepError as e:
        # depending on TweepError.code, one may want to retry or wait
        # to keep things simple, we will give up on an error
        break
24
répondu gumption 2017-05-23 12:18:23

Il y a un problème dans votre code. Basé sur la Documentation Twitter pour faire des recherches/des tweets,

The number of tweets to return per page, up to a maximum of 100. Defaults to 15. This was   
formerly the "rpp" parameter in the old Search API.

votre code devrait être,

CONSUMER_KEY = '....'
CONSUMER_SECRET = '....'
ACCESS_KEY = '....'
ACCESS_SECRET = '....'

auth = tweepy.auth.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
search_results = api.search(q="hello", count=100)

for i in search_results:
    # Do Whatever You need to print here
7
répondu Yuva Raj 2014-03-18 07:50:30