J'ai essayé de comprendre cela, mais c'est vraiment frustrant. J'essaie d'obtenir des tweets avec un certain hashtag (une grande quantité de tweets) en utilisant Tweepy. Mais cela ne remonte pas à plus d'une semaine. J'ai besoin de revenir en arrière au moins deux ans pour une période de quelques mois. Est-ce même possible, si oui, comment?
Juste pour la vérification, voici mon code
import tweepy
import csv
consumer_key = '####'
consumer_secret = '####'
access_token = '####'
access_token_secret = '####'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
# Open/Create a file to append data
csvFile = open('tweets.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)
for Tweet in tweepy.Cursor(api.search,q="#ps4",count=100,\
lang="en",\
since_id=2014-06-12).items():
print Tweet.created_at, Tweet.text
csvWriter.writerow([Tweet.created_at, Tweet.text.encode('utf-8')])
Vous ne pouvez pas utiliser l'API de recherche Twitter pour collecter des tweets d'il y a deux ans. Selon les documents:
Notez également que les résultats de recherche sur Twitter.com peuvent renvoyer des résultats historiques alors que l'API de recherche ne sert généralement que les tweets de la semaine dernière. - documentation Twitter .
Si vous avez besoin d'un moyen d'obtenir d'anciens tweets, vous pouvez les obtenir auprès d'utilisateurs individuels car la collecte de tweets d'eux est limitée par le nombre plutôt que par le temps (dans de nombreux cas, vous pouvez donc remonter des mois ou des années). Un service tiers qui collecte des tweets comme Topsy peut également être utile dans votre cas (fermé à partir de juillet 2016, mais d'autres services existent).
Comme vous avez remarqué que l'API Twitter a certaines limites, j'ai implémenté un code qui le fait en utilisant la même stratégie que Twitter fonctionnant sur un navigateur. Jetez un oeil, vous pouvez obtenir les plus anciens tweets: https://github.com/Jefferson-Henrique/GetOldTweets-python
Trouvé un code qui aiderait à récupérer les anciens tweets. https://github.com/Jefferson-Henrique/GetOldTweets-python
Pour obtenir les anciens tweets, exécutez la commande suivante dans le répertoire où le référentiel de code a été extrait.
python Exporter.py --querysearch 'keyword' --since 2016-01-10 --until 2016-01-15 --maxtweets 1000
Et il a renvoyé un fichier 'output_got.csv' avec 1000 tweets au cours des jours ci-dessus avec votre mot clé
Vous devez installer un module 'pyquery' pour que cela fonctionne
PS: Vous pouvez modifier 'Exporter.py' python pour obtenir plus d'attributs Tweet selon vos besoins.
Mise à jour 2018: Twitter dispose d'API de recherche Premium qui peuvent renvoyer des résultats depuis la nuit des temps (2006):
https://developer.Twitter.com/en/docs/tweets/search/overview/premium#ProductPackages
Rechercher les Tweets: point final de 30 jours → fournit les Tweets des 30 derniers jours.
Rechercher des Tweets: point de terminaison d'archive complète → fournit un accès complet et instantané aux Tweets datant du premier Tweet de mars 2006.
Avec un exemple Python client: https://github.com/twitterdev/search-tweets-python
utilisez les arguments "depuis" et "jusqu'à" pour ajuster votre calendrier. Vous utilisez actuellement Since_id qui est censé correspondre aux valeurs des identifiants Twitter (et non aux dates):
for Tweet in tweepy.Cursor(api.search,
q="test",
since="2014-01-01",
until="2014-02-01",
lang="en").items():
Comme d'autres l'ont noté, l'API Twitter a la limitation de date, mais pas la recherche avancée réelle telle qu'implémentée sur Twitter.com. La solution consiste donc à utiliser le wrapper de Python pour Selenium ou PhantomJS pour parcourir le point de terminaison Twitter.com. Voici une implémentation utilisant Selenium que quelqu'un a publiée sur Github: https://github.com/bpb27/Twitter_scraping/