Kapitel 3 Erhebung der Daten des 19. Bundestags

Leider gibt es keine Möglichkeit, die XML-Protokolle des Deutschen Bundestages gesammelt herunterzuladen. Zwar finden sich auf Open Data-Seite des Bundestags1 die Verweise auf die Bundestagsprotkolle, allerdings können diese nur umständlich einezln heruntergeladen werden. Durch das Auslesen der Netzwerkdaten nach einem Klick auf die nächsten fünf Protkolle eine Webseite gefunden werden, auf welcher jeweils fünf Protkolle gespeichert sind2. Durch setzen des offset=0 auf 5, 10, 15, 20, … können wir die weiteren Protokolle abrufen.

Mittels rvest und xml2 ziehen wir uns zunächst die Nummer des letzten Bundestagsprotokolls. Über die Funktion seq() und paste0() können wir anschließend alle für den weiteren Verlauf notwendigen URLs erstellen.

Insgesamt müssen wir also 13 Webseiten aufrufen und uns jeweils fünf Protokolle herunterladen.

Der Aufwand ist hier noch überschaubar. Natürlich laden wir die Protokolle dennoch nicht per Hand herunter, sondern erstellen uns hierfür ein kleines Script. Da die meisten Rechner auch mit mehr als nur einem Prozessor ausgestattet sind, können wir die Funktion auch auf mehreren Prozessoren ausführen. Wir sprechen hier von multiprocessing. Dies realisieren wir über das Packet furrr (Vaughan/Dancho 2018) - eine Abwandlung des bereits genutzten purrr.

Wir schreiben uns zunächst eine Funktion, um die Links der Webseiten zu extrahieren.

## [1] "https://www.bundestag.de/blob/578466/7430bccaf792e7bc55e84d5e64675820/19062-data.xml"
## [2] "https://www.bundestag.de/blob/577958/e2063c0f51a32690a269f48aa6102c1d/19061-data.xml"
## [3] "https://www.bundestag.de/blob/577622/da97888b713abb16ed2070836504b83a/19060-data.xml"
## [4] "https://www.bundestag.de/blob/575138/b5395a975d1c55838da0e52251018160/19059-data.xml"
## [5] "https://www.bundestag.de/blob/574826/0e3659e11c1c3cdbfa621369cd16735a/19058-data.xml"

Dies wenden wir nun auf alle 13 Webseiten an und speichern die Dateien anschließend im Ordner data\protokolle.

Wir waren erfolgreich und konnten in wenigsten Sekunden alle aktuellen Protokolle herunterladen. Wir können sie jetzt auslesen und dabei auch unsere bereits erstellten Funktionen verwenden.

3.1 Überblick der Reden

Wir konnten nun alle Dateien herunterladen und anschließend alle Protkolle in R einlesen. Mit unserer Funktion get_overview_df() konnten wir alle Protokolle in einen für uns passenden Datenframe umwandeln. Insgesamt können wir derzeit 5.777 Reden des aktuellen Bundestags untersuchen – etwa nach der Person, welche die meisten reden gehalten hat.

## # A tibble: 773 x 6
## # Groups:   redner_id, redner_vorname, redner_nachname, redner_fraktion
## #   [728]
##    redner_id redner_vorname redner_nachname redner_fraktion redner_rolle
##    <chr>     <chr>          <chr>           <chr>           <chr>       
##  1 11002617  Peter          Altmaier        <NA>            Bundesminis…
##  2 999990073 Olaf           Scholz          <NA>            Bundesminis…
##  3 11004427  Volker         Ullrich         CDU/CSU         <NA>        
##  4 11001478  Angela         Merkel          <NA>            Bundeskanzl…
##  5 11004809  Heiko          Maas            <NA>            Bundesminis…
##  6 11004851  Frauke         Petry           fraktionslos    <NA>        
##  7 11004798  Alexander Graf Lambsdorff      FDP             <NA>        
##  8 11003625  Andreas        Scheuer         <NA>            Bundesminis…
##  9 999990074 Svenja         Schulze         <NA>            Bundesminis…
## 10 11003638  Jens           Spahn           <NA>            Bundesminis…
## # ... with 763 more rows, and 1 more variable: reden <int>

Die Minister_innen haben am häuiigsten im Bundestag geredet, der MdB Volker Ullrich landet erst af Platz 4 mit insgesamt vierzig Reden in der aktuellen Wahlperiode. Überraschenderweise hat Frauke Petry sehr viele Reden gehalten: 35 Stück. Das sind deutlich mehr als in ihrer damaligen Zeit im Landesparlament.

Wir können die Reden auch nach Fraktionen auswerten:

Tabelle 3.1: Reden Nach Fraktion im Deutschen Bundestag
redner_fraktion reden
CDU/CSU 1353
SPD 962
AfD 784
FDP 683
BÜNDNIS 90/DIE GRÜNEN 662
NA 662
DIE LINKE 606
fraktionslos 63
Bremen 1
Bündnis 90/Die Grünen 1

Mit auswertung der Daten nach Fraktion stellen wir kleinere Probleme fest: Anscheinend wurden die Grüne in einem Dokument nicht in der üblichen Schreibweise geschrieben. Und die Fraktion “Bremen” ist vermutlich auch in der falschen Spalte gelandet - es handelt sich nämlich um eine Rede des Bremer Bürgermeisters. Beide ändern wir entsprechend:

3.2 Inhalte der Reden

Auch die Inhalte der Reden sollen aus allen Protokollen ausgelesen werden. Eine Auswertung erfolgt später.

3.3 Daten der Abgeordneten

Wir haben nun die Reden als auch die Inhalte der Reden im Bundestag heruntergeladen. Dabei haben wir auch schon Verweise auf die Fraktionen und auch die Rollen (beispielsweise die Rede als Bundesminister_in) generieren können. Es fehlen uns jedoch noch Aussagen über das Geschlecht der Redner_innen (und weitere Daten – etwa Alter, Ausschussmitgliedschaften und Amtszeit).

Diese können wir abermals über das Open Data Portal3 des Bundestags herunterladen. Es handelt sich um eine ZIP-Datei, welche wir zunächst herunterladen und anschließed extrahieren.

Nachdem die Datei heruntergeladen und ausgelesen wurde, können wir die Daten wieder einen Dataframe umwandeln.

## # A tibble: 4,073 x 6
##    id       geschlecht geburtsjahr partei wahlperioden anzahl_wahlperioden
##    <chr>    <chr>            <int> <chr>  <list>                     <int>
##  1 11000001 männlich          1930 CDU    <int [7]>                      7
##  2 11000002 männlich          1909 FDP    <int [5]>                      5
##  3 11000003 weiblich          1913 CDU    <int [3]>                      3
##  4 11000004 weiblich          1933 CDU    <int [2]>                      2
##  5 11000005 männlich          1950 CDU    <int [5]>                      5
##  6 11000007 männlich          1919 SPD    <int [4]>                      4
##  7 11000008 männlich          1912 CDU    <int [1]>                      1
##  8 11000009 männlich          1876 CDU    <int [5]>                      5
##  9 11000010 weiblich          1944 SPD    <int [4]>                      4
## 10 11000011 männlich          1920 CDU    <int [3]>                      3
## # ... with 4,063 more rows

Die Namen brauchen wir nicht zwingend, da wir dies auch den bestehenden Daten entnehmen können (außerdem haben wir ein kleine Problem mit Abgeordneten, welche während oder zwischen den Wahlperioden den Nachnamen ändern oder ergänzen). Wichtig ist hier die ID – mit dieser können wir die einzelnen Reden den Abgeordneten und schließich auch dem jeweiligen Geschlecht zuordnen.

Bei den Stammdaten handelt es sich um die Daten aller Bundestagsabgeordnetem seit dem 1. Bundestag, welcher 14. August 1949 gewählt wurde. Insgesamt waren 4.073 Personen im Bundestag vertreten. Wie viele davon weiblich und männlich waren, lässt sich wenigen Zeilen Code darstellen. Die letzten beiden Zeilen des Codes beziehen sich nur auf eine bessere Darstellung in der PDF und der Webseite.

Tabelle 3.2: Bundestagsabgeordnete aller Wahlperioden nach Geschlecht
geschlecht n freq
männlich 3223 0.7913086
weiblich 850 0.2086914

Die große Mehrheit der im Bundestag vertretenen Person ist männlich. Nur eine Minderheit von 20,9% der Abgeordneten war oder ist weiblich. Ein nicht-binäres Geschlecht oder eine Verweigerung der Angabe des Geschlechts wurde bisher noch nicht angegeben oder nicht dokumentiert – trans- und intersexuelle Menschen sind im Bundestag somit auch weiterhin kaum vertreten.4

Wir können mit diesen Daten auch mit wenig aufwand die Frauenquote in den jeweiligen Wahlperioden darstellen.

Auswertung der Geschlechteranteile aller Deutscher Bundestage

Abbildung 3.1: Auswertung der Geschlechteranteile aller Deutscher Bundestage

Wie in Abb. 3.1 zu erkennen, ist mit der aktuellen Wahlperiode der Anteil an Frauen im Bundestag deutlich zurückgegangen. Die Anteil an Frauen im aktuellen Bundestag beträgt aktuell 30,7 %.

Literatur- und Quellverzeichnis

Vaughan, Davis/Dancho, Matt (2018): Furrr: Apply Mapping Functions in Parallel Using Futures. Text abrufbar unter: https://CRAN.R-project.org/package=furrr.


  1. https://www.bundestag.de/service/opendata

  2. https://www.bundestag.de/ajax/filterlist/de/service/opendata/-/543410?offset=0

  3. https://www.bundestag.de/service/opendata

  4. Eine Ausnahme ist etwa der Politiker Christian Schenk, welcher sich nach seiner Zeit im Bundestag als Transmann outete und eine Geschlechtsumwandlung vollzog.