[PYTHON] Obtenez des réponses à des tweets spécifiques avec tweepy

1. À propos de cet article

Dans cet article, tweepy est utilisé pour définir un tweet spécifique + une réponse au tweet correspondant. Décrivez le code à obtenir. Dans le code ci-dessous, plus de 100 réponses ont été publiées à titre d'exemple Rassemblez les informations sur les tweets et les réponses.

L'ensemble des tweets et réponses acquis est "Id" inclus dans le statut du tweet et "in_reply_to_status_id" inclus dans le statut de la réponse La destination peut être liée par assemblage.

Veuillez noter que la version gratuite de l'API Twitter a une limitation selon laquelle les tweets datant de plus de 7 jours ne peuvent pas être collectés.

2. Code * python3

gather.py


# coding:utf-8

import tweepy
import csv
import time
from datetime import datetime, date, timedelta
import re

#Obtenir des informations sur la date actuelle
today = datetime.today()
#Spécifiez la plage horaire de publication du tweet à acquérir(Exemple: depuis 2 jours jusqu'à aujourd'hui)
tweet_begin_date = datetime.strftime(today - timedelta(days=2), '%Y-%m-%d_00:00:00_JST')
tweet_end_date = datetime.strftime((today), '%Y-%m-%d_23:59:00_JST')
#Spécifiez la plage de temps de publication de la réponse à acquérir(Exemple: depuis 2 jours jusqu'à aujourd'hui)
reply_begin_date = datetime.strftime(today - timedelta(days=2), '%Y-%m-%d_00:00:00_JST')
reply_end_date = datetime.strftime((today), '%Y-%m-%d_23:59:00_JST')

#Résultat de l'acquisition répertoire de destination de sortie du fichier csv
csv_dir = '/hoge/'

# Twitter API KEY
Consumer_key = 'xxxx'
Consumer_secret = 'xxxx'
Access_token = 'xxxx'
Access_secret = 'xxxx'

#Pour l'authentification API Twitter
def authTwitter():
        auth = tweepy.OAuthHandler(Consumer_key, Consumer_secret)
        auth.set_access_token(Access_token, Access_secret)
        api = tweepy.API(auth, retry_count=3,retry_delay=40,retry_errors=set([401, 404, 500, 502, 503, 504]), wait_on_rate_limit = True, wait_on_rate_limit_notify=True)
        return(api)

#Pour l'acquisition de données de tweet
def gather_tweet_and_reply(s,t):
        api = authTwitter() #Authentification
        tweet_list = []
        reply_list = []
        tweet_id_list = []
        user_id_list = []

        tweets = tweepy.Cursor(api.search, q = s,     #Chaîne de recherche
                 include_entities = True,   #Récupérer tous les liens omis
                 tweet_mode = 'extended',   #Obtenez tous les tweets omis
                 since = tweet_begin_date,    #Spécifier la date et l'heure de début de la collecte
                 until = tweet_end_date,      #Spécifier la période de fin de collecte
                 lang = 'ja').items()       #Recevez uniquement des tweets japonais

        #Stocker les tweets recherchés dans une liste
        for tweet in tweets:
                tweet_list.append([tweet.id, tweet.user.screen_name, tweet.created_at, tweet.full_text.replace('\n',''), tweet.favorite_count, tweet.retweet_count])
                tweet_id_list.append(tweet.id)
                user_id_list.append(tweet.user.screen_name)

        # user_id_Le nom d'utilisateur stocké dans la liste recherche la réponse de destination
        for user_id in user_id_list:
                replies = tweepy.Cursor(api.search, q = t + " to:" + str(user_id),   #Chaîne de recherche
                          include_entities = True,   #Récupérer tous les liens omis
                          tweet_mode = 'extended',   #Obtenez tous les tweets omis
                          since = reply_begin_date,    #Spécification de la date et de l'heure de début de la collecte des réponses
                          until = reply_end_date,      #Spécification de la date et de l'heure de fin de la collecte des réponses
                          lang = 'ja').items()       #Recevez uniquement des tweets japonais
                #Contre-mesures contre la déconnexion de session due à la transmission massive de requêtes
                time.sleep(5)
                #L'ID de destination de la réponse est un tweet_id_Stocker dans la liste si dans la liste
                for reply in replies:
                        if reply.in_reply_to_status_id in tweet_id_list:
                                reply_list.append([reply.id, reply.in_reply_to_status_id, reply.user.screen_name, reply.created_at, reply.full_text.replace('\n',''), reply.favorite_count, reply.retweet_count])

        #Résultat csv de sortie
        with open(csv_dir+'tweet_'+ today.strftime('%Y%m%d_%H%M%S') + '.csv', 'w',newline='',encoding='utf-8') as f:
                writer = csv.writer(f, lineterminator='\n')
                writer.writerow(["id","user","created_at","text","fav","RT"])
                writer.writerows(tweet_list)
        pass

        with open(csv_dir+'reply_'+ today.strftime('%Y%m%d_%H%M%S') + '.csv', 'w',newline='',encoding='utf-8') as f:
                writer = csv.writer(f, lineterminator='\n')
                writer.writerow(["id","to_id","user","created_at","text","fav","RT"])
                writer.writerows(reply_list)
        pass

def main():
        gather_tweet_and_reply("lang:ja exclude:retweets min_replies:100","lang:ja filter:replies exclude:retweets")

if __name__ == "__main__":
        main()

3. Référence

Résumé des procédures depuis l'enregistrement de l'API Twitter (méthode de demande de compte) jusqu'à l'approbation * Informations en août 2019Je ne savais pas ce que je pouvais obtenir de la liste des statuts Tweepy, alors je l'ai retirée

Recommended Posts

Obtenez des réponses à des tweets spécifiques avec tweepy
Recevez des tweets avec Tweepy
Recevez beaucoup de vos tweets avec Tweepy
Comment supprimer sélectivement les anciens tweets avec Tweepy
Comment annuler RT avec Tweepy
Comment démarrer avec Scrapy
Comment démarrer avec Python
Comment démarrer avec Django
Notes d'étape pour démarrer avec django
Comment obtenir l'identifiant du parent avec sqlalchemy
Exclure les tweets contenant des URL avec tweepy [Python]
J'ai essayé de commencer avec Hy
Une histoire à laquelle j'étais accro à essayer d'obtenir une URL de vidéo avec tweepy
Recevez des tweets avec la fonction Google Cloud et enregistrez automatiquement les images dans Google Photos
Le moyen le plus simple de démarrer avec Django
J'ai essayé d'obtenir des données CloudWatch avec Python
Zubu amateur veut démarrer Python
Script Python pour obtenir des informations de note avec REAPER
Obtenez des images et des vidéos de la chronologie des médias avec Python + Tweepy
J'ai essayé de démarrer avec le script python de blender_Part 01
Comment obtenir un utilisateur connecté avec les forms.py de Django
J'ai essayé de démarrer avec le script python de blender_Partie 02
Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb
Essayez d'obtenir le contenu de Word avec Golang
Obtenez des tweets Twitter, des followers, des followers, des likes, avec urllib et beautifulSoup
Comment obtenir le verdict de la molette de la souris avec des malédictions Python
Recevez des tweets avec des mots-clés arbitraires à l'aide de l'API Streaming de Twitter
Appliquer l'environnement de conda à un répertoire spécifique avec pyenv-vertualenv
Convertir 202003 en 2020-03 avec les pandas
Collecter des tweets avec Python
Publier des tweets avec python
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Démarrez avec MicroPython
Obtenez date avec python
Démarrez avec Mezzanine
Mémo pour obtenir la valeur côté html-javascript avec jupyter
Connaissances minimales pour démarrer avec le module de journalisation Python
[NetworkX] Je souhaite rechercher des nœuds avec des attributs spécifiques
Obtenez la version du package pour vous inscrire à PyPI à partir de Git
J'ai essayé de commencer avec Hy ・ Définir une classe
[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud
Comment extraire un index autre qu'un index spécifique avec Numpy
Comment entrer dans l'environnement de développement Python avec Vagrant
Essayez d'acquérir des données lors de la redirection de port vers RDS avec anaconda.
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Récupérez la source de la page à charger indéfiniment avec python.