web-dev-qa-db-fra.com

Obtenez tous les identifiants de suiveur sur Twitter par Tweepy

Est-il possible d’obtenir la liste complète des abonnés d’un compte comptant plus d’un million d’abonnés, comme McDonald's?

J'utilise Tweepy et suis le code:

c = tweepy.Cursor(api.followers_ids, id = 'McDonalds')
ids = []
for page in c.pages():
     ids.append(page)

J'essaye aussi ceci:

for id in c.items():
    ids.append(id)

Mais j'ai toujours eu l'erreur «Taux limite dépassée» et il n'y avait que 5000 identifiants de suiveurs.

24
user1056824

Afin d’éviter la limitation du débit, vous pouvez/devriez attendre avant la demande de page suivante On dirait hacky, mais ça marche:

import time
import tweepy

auth = tweepy.OAuthHandler(..., ...)
auth.set_access_token(..., ...)

api = tweepy.API(auth)

ids = []
for page in tweepy.Cursor(api.followers_ids, screen_name="McDonalds").pages():
    ids.extend(page)
    time.sleep(60)

print len(ids)

J'espère que cela pourra aider.

38
alecxe

Utilisez les arguments de limitation de débit lors de la connexion. L'API se maîtrisera dans la limite du taux.

La pause de sommeil n’est pas mauvaise, j’utilise cela pour simuler un être humain et pour étaler l’activité sur une période de temps avec le contrôle limite de l’api rate.

api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True, compression=True)

ajoutez également try/except pour capturer et contrôler les erreurs.

exemple de code https://github.com/aspiringguru/twitterDataAnalyse/blob/master/sample_rate_limit_w_cursor.py

Je mets mes clés dans un fichier externe pour faciliter la gestion.

https://github.com/aspiringguru/twitterDataAnalyse/blob/master/keys.py

17
aspiringGuru

La réponse d’Alecxe est bonne, mais personne n’a fait référence à la documentation. Les informations et explications correctes pour répondre à la question se trouvent dans la Documentation API Twitter . De la documentation: 

Les résultats sont donnés en groupes de 5 000 ID utilisateur et vous pouvez naviguer dans plusieurs pages de résultats en utilisant la valeur next_cursor dans les requêtes suivantes.

0