install.packages("vosonSML")13 Datensammlung: YouTube
13.1 Setup
13.1.1 Pakete laden
Um Daten von YouTube zu sammeln, nutzen wir das R-Paket vosonSML. Eine Alternative zu vosonSML ist das Paket tuber. Mit diesem kann man neben Kommentaren zu Videos u.a. auch (Meta-)Daten zu Kanälen und Playlists sammeln. Allerdings ist die Authentifizierung bei tuber komplizierter, da es ein andere Authentifizierungsverfahren (OAuth2) nutzt.
Wie immer müssen wir das Paket zunächst (einmalig) installieren und dann (in jeder Sitzung) laden.
library(vosonSML)Warning: Paket 'vosonSML' wurde unter R Version 4.5.2 erstellt
Zusätzlich nutzen wir auch in diesem Abschnitt Funktionen aus den tidyverse-Paketen. Sofern dies in der aktuellen R-Session noch nicht geschehen ist, müssen wir auch diese Pakete erst laden
library(tidyverse)13.1.2 Authentifizierung
Um mit dem Paket vosonSML Daten von YouTube zu sammeln, benötigen wir einen API Key. Wie Sie diesen erhalten, wird ausführlich in einem Tutorial von Communalytic sowie im GESIS Guide How to Collect Data with the YouTube Data API (Kohne et al., 2024) beschrieben.
Wichtig: Behandeln Sie den API Key wie ein Passwort. D.h. speichern Sie ihn in einem Passwort-Manager oder notieren Sie ihn an einem sicheren Ort, aber teilen Sie ihn nicht mit anderen Personen.
Sobald Sie einen API Key für die YouTube (Data) API haben, können Sie sich mit der Funktion Authenticate() aus vosonSML authentifizieren.
auth_yt <- Authenticate("youtube",
apiKey = "your_api_key_here") # ersetzen Sie "your_api_key_here" durch Ihren tatsächlichen API Key13.2 Daten sammeln
13.2.1 Kommentare zu Videos
Die Funktion Collect() aus dem Paket vosonSML bietet die Möglichkeit, Kommentare zu bestimmten Videos zu sammeln. Dazu muss man die URLs der Videos angeben, von denen man die Kommentare sammeln möchte. Um Videos zu einem bestimmten Thema zu finden, können wir die Suchfunktion von YouTube nutzen.
Hinweis: Wenn Sie auch für YouTube-Daten beim Sampling accountbasiert vorgehen wollen, können Sie die Informationen aus dem Datensatz Social Media Accounts (TikTok, YouTube, X/Twitter) of the Candidates in the 2025 German Federal Election (Steup et al., 2025) nutzen.
Im nachfolgenden Beispiele sammeln wir die Kommentare zu zwei exemplarischen Videos aus den Ergebnissen der Suche “Bundestagswahl 2025” auf YouTube. Dafür erstellen wir zunächst einen Vektor mit den URLs der Videos, von denen wir die Kommentare sammeln wollen.
video_urls <- c("https://www.youtube.com/watch?v=5A-ggbcnwcg",
"https://www.youtube.com/watch?v=a6ZaJ38cy7U")Anschließend können wir die Kommentare zu diesen Videos mit der Funktion Collect() aus vosonSML sammeln. Damit wir dies machen können, müssen wir der Funktion das zuvor erstellte Objekt mit den Authentifizierungsdaten übergeben.
comments_yt <- auth_yt %>%
Collect(videoIDs = video_urls,
maxComments = 2000) # maximale Anzahl an Kommentaren pro VideoCollecting comment threads for YouTube videos...
Video 1 of 2
---------------------------------------------------------------
** Creating dataframe from threads of 5A-ggbcnwcg.
** Collecting replies for 164 threads with replies. Please be patient.
Comment replies 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 3 1 11 1 3 1 1 2 2 1 1 1 2 2 3 1 2 1 2 3 1 2 2 1 1 1 2 1 1 4 1 1 11 3 1 10 2 1 8 2 6 5 1 3 1 5 20 2 6 10 2 2 1 3 2 1 1 1 4 3 2 3 1 1 1 1 1 4 1 1 3 1 1 2 5 1 3 1 1 8 6 3 1 8 3 1 3 1 2 1 13 2 6 1 7 1 16 20 2 1 1 1 9 3 1 2 4 2 1 15 14 10 2 1 2 1 1 1 1 1 4 1 6 1 1 8 6 3 1 4 15 1 4 4 10 7 1 3 1 20 1 2 18 5 10 4 17 2 14
** Collected replies: 582
** Total video comments: 1360
(Video API unit cost: 352)
---------------------------------------------------------------
Video 2 of 2
---------------------------------------------------------------
** Creating dataframe from threads of a6ZaJ38cy7U.
** Collecting replies for 93 threads with replies. Please be patient.
Comment replies 2 1 1 2 2 2 1 1 2 2 3 5 5 1 2 1 2 1 1 3 1 3 13 5 1 4 3 1 1 5 1 2 11 5 5 7 2 1 1 1 2 4 3 3 3 2 2 5 1 1 5 1 7 3 1 1 10 1 3 20 2 5 1 2 4 1 1 1 1 1 1 1 1 8 3 10 6 2 1 2 5 7 1 16 13 5 1 4 1 8 16 2 20
** Collected replies: 344
** Total video comments: 719
(Video API unit cost: 198)
---------------------------------------------------------------
** Total comments collected for all videos 2079.
(Estimated API unit cost: 550)
Done.
glimpse(comments_yt)Rows: 2,079
Columns: 12
$ Comment <chr> "Die deutsche Präzision kennt keine Grenzen; sie…
$ AuthorDisplayName <chr> "@abdikamilnarbekov9828", "@carlesmarch", "@vale…
$ AuthorProfileImageUrl <chr> "https://yt3.ggpht.com/ytc/AIdro_lO1bg78qyz0HR_Z…
$ AuthorChannelUrl <chr> "http://www.youtube.com/@abdikamilnarbekov9828",…
$ AuthorChannelID <chr> "UCwt56j6_yUnxErCnzgNSJ6w", "UCAoUM5AyxnA1qSoQVE…
$ ReplyCount <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
$ LikeCount <chr> "0", "0", "4", "0", "0", "0", "0", "0", "4", "0"…
$ PublishedAt <chr> "2025-10-10T01:54:46Z", "2025-03-04T19:17:08Z", …
$ UpdatedAt <chr> "2025-10-10T01:54:46Z", "2025-03-04T19:17:08Z", …
$ CommentID <chr> "UgwiakmTsk6z-aXOB394AaABAg", "UgzciKZHDm2Rn7S77…
$ ParentID <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
$ VideoID <chr> "5A-ggbcnwcg", "5A-ggbcnwcg", "5A-ggbcnwcg", "5A…
Wichtig: Für die kostenfreie Nutzung der YouTube Data API gibt es bestimmte Kontingente, d.h. es gibt eine maximale Anzahl an Anfragen, die man pro Tag stellen kann. Aktuell liegt das Tageslimit bei 10.000 Anfragen pro Tag. Je nachdem, wie viele Kommentare man sammeln möchte, kann es daher sein, dass man das Tageslimit überschreitet. In diesem Fall muss ggf. warten, bis das Tageslimit zurückgesetzt wird. Dies geschieht immer um Mitternacht Pacific Time. Die Funktion Collect() von vosonSML zeigt einem die geschätzten API-Kosten an.
13.2.2 Weitere Daten
Das Paket vosonSML bietet einige Funktionen für Netzwerkanalysen (auch von YouTube-Kommentaren). Eine Einführung in die Netzwerkanalyse bietet u.a. Kapitel 13 im Online-Buch Computational Analysis of Communication.
Für (Meta-) Daten zu Kanälen oder Playlists bietet das Paket tuber spezifische Funktionen an.