Tout d'abord, jetez un œil à ceci. [Plan] Championnat Bad Face https://www.youtube.com/watch?v=IEkLSfs1F68
Obtenez des commentaires
Utilisez l'API Youtube Data pour obtenir des commentaires et y répondre.
Les informations autres que les commentaires (ID de la personne qui a commenté, etc.) ne sont pas acquises.
Conditions de jugement pour le rapport de dommages
Le nom + le numéro (1 à 3) est inclus, comme "Nagata ①" et "Matsuo 2".
C'est passif comme "...".
Cependant, puisque je veux inclure des informations d'observation, j'inclus également "-ita".
get_youtube_comments.py
import json
import re
import pandas as pd
import requests
API_KEY = 'Entrez votre clé API'
VIDEO_ID = 'IEkLSfs1F68'
def get_comment_info(api_key, video_id, page_token):
comment_url = 'https://www.googleapis.com/youtube/v3/commentThreads'
param = {
'key': api_key,
'videoId': video_id,
'part': 'replies, snippet',
'maxResults': '100',
}
if page_token:
param['pageToken'] = page_token
response = requests.get(comment_url, params=param)
return response.json()
def get_video_comments(api_key, video_id):
comments = []
page_token = ''
while page_token != None:
resource = get_comment_info(api_key, video_id, page_token)
for comment_thread in resource['items']:
#Obtenez des commentaires
comment = comment_thread['snippet']['topLevelComment']['snippet']['textDisplay']
comments.append(comment)
if ('replies' in comment_thread) and ('comments' in comment_thread['replies']):
for replies in comment_thread['replies']['comments']:
#Obtenez des commentaires
reply_comment = replies['snippet']['textDisplay']
comments.append(reply_comment)
if 'nextPageToken' in resource:
page_token = resource['nextPageToken']
else:
page_token = None
return comments
#Obtenez une liste de commentaires
comments = get_video_comments(API_KEY, VIDEO_ID)
#Supprimer la balise de saut de ligne
comments = list(map(lambda x: re.sub('<br />', '', x), comments))
target_list = []
report_comment_list = []
for comment in comments:
target = re.findall('[Nagata|Matsuo]+[1-31-3①②③]', comment)
#S'il y en a plusieurs, seule la valeur unique est extraite
target = list(set(target))
passive_words = re.findall('(Était|Était|Était là|Était là)', comment)
if len(target) > 0 and len(passive_words) > 0:
#S'il y a plusieurs cibles dans un commentaire, ajoutez chaque cible à la liste.
for t in target:
target_list.append(t)
report_comment_list.append(comment)
df = pd.DataFrame({'target': target_list, 'comment': report_comment_list})
#Afficher plusieurs éléments au hasard
df.sample(5, random_state=42)
print(df.shape)
->(178, 2)
Il semble qu’un total de 178 rapports de dommages aient été soumis.
target comment
19 Matsuo ② J'avais vraiment peur parce que je le poursuivais sans relâche. J'étais inquiet parce que j'avais un jeune enfant dans le dos...
45 Nagata ① Parker a été volé par Nagata ①.
24 Nagata ③ Nagata ③ De plus, il y a beaucoup d'informations dont j'avais parlé aux résidents voisins selon lesquels "Dieu m'a pris la main" auparavant....
30 Matsuo ② Matsuo ② ont volé 96 crabes.
67 Matsuo ① Matsuo ①, Nagata ② et Matsuo ③ m'ont arnaqué.
Je suis curieux de connaître le n ° 24.
Chocopla est bon ~
J'ai été autorisé à faire référence. Merci beaucoup. [Python] Obtenez tous les commentaires à l'aide de YouTube Data Api Obtenez des commentaires et des abonnés avec l'API de données YouTube Chocolate Planet Channel