premium oauthhandler information home_timeline for descargar con python twitter tweepy

python - oauthhandler - Gestionando la búsqueda de Tweepy API



tweepy get user information (3)

Por favor, perdóneme si esto es una repetición de una pregunta contestada previamente en otro lugar, pero estoy perdido en cómo usar la función de búsqueda de API tweepy. ¿Hay documentación disponible sobre cómo buscar tweets utilizando la función api.search() ?

¿Hay alguna forma en que pueda controlar características como la cantidad de tweets devueltos, el tipo de resultados, etc.?

Los resultados parecen alcanzar un máximo de 100 por alguna razón.

El fragmento de código que utilizo es el siguiente

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


Hay un problema en tu código. Basado en la documentación de Twitter para búsqueda GET / 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.

Tu código debe ser,

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


Las otras preguntas son viejas y la API ha cambiado mucho.

De manera sencilla, con Cursor (vea el tutorial de Cursor ). Pages devuelven una lista de elementos (puede limitar la cantidad de páginas que devuelve. .pages(5) solo devuelve 5 páginas):

for page in tweepy.Cursor(api.search, q=''python'', count=100, tweet_mode=''extended'').pages(): # process status here process_page(page)

Donde q es la consulta, count cuántas traerá para las solicitudes (100 es el máximo para las solicitudes) y tweet_mode=''extended'' es tener el texto completo. (sin esto, el texto se trunca a 140 caracteres) Más información here . RTs se truncan como jaycech3n confirmado.

Si no desea utilizar tweepy.Cursor , debe indicar max_id para traer el siguiente fragmento. See para más información.

last_id = None result = True while result: result = api.search(q=''python'', count=100, tweet_mode=''extended'', max_id=last_id) process_result(result) # we subtract one to not have the same again. last_id = result[-1]._json[''id''] - 1


Originalmente, elaboré una solución basada en la suggestion Yuva Raj de usar parámetros adicionales en la búsqueda / tweets GET : el parámetro max_id junto con la id del último tweet devuelto en cada iteración de un bucle que también verifica la aparición de un TweepError .

Sin embargo, descubrí que hay una manera mucho más sencilla de resolver el problema usando un tweepy.Cursor (consulte el tutorial de Tweepy Cursor para obtener más información sobre el uso de Cursor ).

El siguiente código recupera las 1000 menciones más recientes 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)]

Actualización: en respuesta al comentario de Andre Petre sobre posibles problemas de consumo de memoria con tweepy.Cursor , tweepy.Cursor mi solución original, reemplazando la única comprensión de la lista de instrucciones utilizada anteriormente para calcular searched_tweets con lo siguiente:

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