web-dev-qa-db-fra.com

Comment puis-je obtenir des tweets de plus d'une semaine (en utilisant tweepy ou d'autres python)

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')])
31
MustiHakan

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).

20
Luigi

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.

9
Shivangi Gupta

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

3
Geordie

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():
1
RohitJ

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/

1
Dan Nguyen