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.
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()
・ Zusammenfassung der Verfahren von der Registrierung der Twitter-API (Kontoantragsmethode) bis zur Genehmigung * Informationen ab August 2019 ・ Ich wusste nicht, was ich aus der Tweepy-Statusliste bekommen konnte, also habe ich es herausgenommen
Recommended Posts