python - from - tweepy example code
Tweepy(Twitter API) no devuelve todos los resultados de búsqueda (2)
Estoy usando la función de búsqueda con Tweepy para Twitter y por alguna razón los resultados de búsqueda están limitados a 15. Aquí está mi código
results=api.search(q="Football",rpp=1000)
for result in results:
print "%s" %(clNormalizeString(result.text))
print len(results)
y solo se devuelven 15 resultados. ¿Tiene algo que ver con diferentes páginas de resultados o algo así?
Aquí hay un ejemplo de trabajo mínimo (una vez que reemplaza las claves falsas con las reales).
import tweepy
from math import ceil
def get_authorization():
info = {"consumer_key": "A7055154EEFAKE31BD4E4F3B01F679",
"consumer_secret": "C8578274816FAEBEB3B5054447B6046F34B41F52",
"access_token": "15225728-3TtzidHIj6HCLBsaKX7fNpuEUGWHHmQJGeF",
"access_secret": "61E3D5BD2E1341FFD235DF58B9E2FC2C22BADAD0"}
auth = tweepy.OAuthHandler(info[''consumer_key''], info[''consumer_secret''])
auth.set_access_token(info[''access_token''], info[''access_secret''])
return auth
def get_tweets(query, n):
_max_queries = 100 # arbitrarily chosen value
api = tweepy.API(get_authorization())
tweets = tweet_batch = api.search(q=query, count=n)
ct = 1
while len(tweets) < n and ct < _max_queries:
print(len(tweets))
tweet_batch = api.search(q=query,
count=n - len(tweets),
max_id=tweet_batch.max_id)
tweets.extend(tweet_batch)
ct += 1
return tweets
Nota: Intenté utilizar un bucle for, pero la API de Twitter a veces devuelve menos de 100 resultados (a pesar de que se le pidieron 100 y 100 están disponibles). No estoy seguro de por qué esto es así, pero esa es la razón por la que no incluí un cheque para romper el ciclo si tweet_batch está vacío; es posible que desee agregar dicho control ya que hay un límite de tasa de consultas .
Otra nota: puede evitar alcanzar el límite de velocidad invocando wait_on_rate_limit=True
como tal
api = tweepy.API(get_authorization(), wait_on_rate_limit=True)
La pregunta es más acerca de Twitter API en lugar de tweepy sí mismo.
De acuerdo con la documentación , el parámetro de count
define:
La cantidad de tweets que se devolverán por página, hasta un máximo de 100. El valor predeterminado es 15. Este fue anteriormente el parámetro "rpp" en la antigua API de búsqueda.
FYI, puedes usar tweepy.Cursor
para obtener resultados paginados, como este:
import tweepy
auth = tweepy.OAuthHandler(..., ...)
auth.set_access_token(..., ...)
api = tweepy.API(auth)
for tweet in tweepy.Cursor(api.search,
q="google",
count=100,
result_type="recent",
include_entities=True,
lang="en").items():
print tweet.created_at, tweet.text
Ver también: https://github.com/tweepy/tweepy/issues/197 .
Espero que ayude.