[PYTHON] Erhalten Sie Antworten auf bestimmte Tweets mit tweepy

1. Über diesen Artikel

In diesem Artikel wird tweepy verwendet, um einen bestimmten Tweet + eine Antwort auf den entsprechenden Tweet festzulegen. Beschreiben Sie den Code, den Sie erhalten möchten. Im folgenden Code wurden über 100 Antworten als Beispiel veröffentlicht Sammeln Sie Tweet- und Antwortinformationen.

Der Satz der erfassten Tweets und Antworten ist "ID" im Status des Tweets und "in_reply_to_status_id" im Status der Antwort Das Ziel kann durch Sortieren verknüpft werden.

Bitte beachten Sie, dass die kostenlose Version der Twitter-API eine Einschränkung aufweist, dass Tweets, die älter als 7 Tage sind, nicht gesammelt werden können.

2. Code * python3

gather.py


# coding:utf-8

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

#Informationen zum aktuellen Datum abrufen
today = datetime.today()
#Geben Sie den Bereich der Veröffentlichungszeit des zu erfassenden Tweets an(Beispiel: Von vor 2 Tagen bis heute)
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')
#Geben Sie den Bereich der Buchungszeit der zu erfassenden Antwort an(Beispiel: Von vor 2 Tagen bis heute)
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')

#Erfassungsergebnis CSV-Datei Ausgabe Zielverzeichnis
csv_dir = '/hoge/'

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

#Für die Twitter API-Authentifizierung
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)

#Zur Erfassung von Tweet-Daten
def gather_tweet_and_reply(s,t):
        api = authTwitter() #Authentifizierung
        tweet_list = []
        reply_list = []
        tweet_id_list = []
        user_id_list = []

        tweets = tweepy.Cursor(api.search, q = s,     #Suchbegriff
                 include_entities = True,   #Holen Sie sich alle ausgelassenen Links
                 tweet_mode = 'extended',   #Holen Sie sich alle ausgelassenen Tweets
                 since = tweet_begin_date,    #Angabe des Startdatums und der Startzeit der Sammlung
                 until = tweet_end_date,      #Angabe des Endzeitraums der Sammlung
                 lang = 'ja').items()       #Holen Sie sich nur japanische Tweets

        #Speichern Sie gesuchte Tweets in einer 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_Der in der Liste gespeicherte Benutzername sucht nach der Zielantwort
        for user_id in user_id_list:
                replies = tweepy.Cursor(api.search, q = t + " to:" + str(user_id),   #Suchbegriff
                          include_entities = True,   #Holen Sie sich alle ausgelassenen Links
                          tweet_mode = 'extended',   #Holen Sie sich alle ausgelassenen Tweets
                          since = reply_begin_date,    #Angeben des Startdatums und der Startzeit für die Antwortsammlung
                          until = reply_end_date,      #Angeben des Enddatums und der Endzeit der Antwortsammlung
                          lang = 'ja').items()       #Holen Sie sich nur japanische Tweets
                #Gegenmaßnahmen gegen die Unterbrechung der Sitzung aufgrund der Massenübertragung von Anforderungen
                time.sleep(5)
                #Antwort Ziel ID ist Tweet_id_In Liste speichern, wenn in 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])

        #CSV-Ergebnis ausgeben
        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. Referenz

Zusammenfassung der Verfahren von der Registrierung der Twitter-API (Kontoantragsmethode) bis zur Genehmigung * Informationen ab August 2019Ich wusste nicht, was ich aus der Tweepy-Statusliste bekommen konnte, also habe ich es herausgenommen

Recommended Posts

Erhalten Sie Antworten auf bestimmte Tweets mit tweepy
Holen Sie sich Tweets mit Tweepy
Holen Sie sich viele Ihrer Tweets mit Tweepy
So löschen Sie vergangene Tweets mit Tweepy selektiv
So brechen Sie RT mit tweepy ab
Wie fange ich mit Scrapy an?
Erste Schritte mit Python
Wie fange ich mit Django an?
Schritt Notizen, um mit Django zu beginnen
So erhalten Sie die Eltern-ID mit sqlalchemy
Schließen Sie Tweets mit URLs mit tweepy [Python] aus.
Ich habe versucht, mit Hy anzufangen
Eine Geschichte, die ich süchtig danach war, eine Video-URL mit Tweepy zu bekommen
Erhalten Sie Tweets mit der Google Cloud-Funktion und speichern Sie Bilder automatisch in Google Fotos
Der einfachste Weg, um mit Django zu beginnen
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Zubu Amateur will Python starten
Python-Skript zum Abrufen von Notizinformationen mit REAPER
Mit Python + Tweepy können Sie Bilder und Videos der Medienzeitleiste abrufen
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
So erhalten Sie einen angemeldeten Benutzer mit Djangos forms.py
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
So erhalten Sie mit SQLAlchemy + MySQLdb mehr als 1000 Daten
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
Holen Sie sich Twitter-Tweets, Follower, Follower, Likes, mit urllib und beautifulSoup
Wie man mit Python-Flüchen ein Urteil über das Mausrad erhält
Erhalten Sie Tweets mit beliebigen Schlüsselwörtern mithilfe der Streaming-API von Twitter
Wenden Sie conda's env mit pyenv-vertualenv auf ein bestimmtes Verzeichnis an
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Tweets mit Python sammeln
Tweets mit Python posten
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Beginnen Sie mit MicroPython
Holen Sie sich ein Date mit Python
Beginnen Sie mit Mezzanine
Memo, um den Wert auf der HTML-Javascript-Seite mit Jupiter zu erhalten
Mindestkenntnisse, um mit dem Python-Protokollierungsmodul zu beginnen
[NetworkX] Ich möchte nach Knoten mit bestimmten Attributen suchen
Holen Sie sich die Paketversion, um sich bei PyPI von Git zu registrieren
Ich habe versucht, mit Hy ・ Define a class zu beginnen
[Python] Ich habe versucht, Tweets über Corona mit WordCloud zu visualisieren
So extrahieren Sie mit Numpy einen anderen als einen bestimmten Index
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
Versuchen Sie, Daten zu erfassen, während Sie mit anaconda eine Portweiterleitung an RDS durchführen.
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.