[PYTHON] Erhalten Sie Parlamentsprotokolle über API

Erhalten Sie Parlamentsprotokolle über API

TL; DR

Klicken Sie auf die API von Python, um alle Parlamentsprotokolle zu sammeln.

1. Offizielle Informationen

Sie können auch über die grafische Benutzeroberfläche im Suchsystem für Aufzeichnungen von Parlamentssitzungen suchen, aber Es gibt ein geeignetes API-Handbuch .jp / api.html).

2. Suchen und erhalten Sie durch Angabe von Schlüsselwörtern

Hier sammeln wir Protokolle mit den folgenden Schlüsselwörtern für die Aussagen, die in den 10 Jahren von 2010 bis 2019 gemacht wurden.

# -*- coding: utf-8 -*-
"""
Created on Thu Dec 26 15:05:04 2019

@author: boomin

pip install untangle
"""

import urllib
import untangle
import urllib.parse

import re
import pandas as pd
import os

spt = os.sep
pklDir  = "pkl"

def getSpeech(keyword:str):
    start="1" #'#Seriennummer der Bemerkung
    apipath = 'http://kokkai.ndl.go.jp/api/1.0/speech?'

    #Regulärer Ausdruck, um den Sprecherteil aus dem Inhalt der Anweisung zu entfernen
    p = re.compile(r'^○([^ ]+)Du?\s(.+)')

    startdate='2010-01-01'
    enddate= '2020-01-01'

    df = pd.DataFrame()

    while start!=None:
        date = []
        speaker = []
        speech = []
        speakerGroup = []
        speakerPosition = []

        url = apipath+urllib.parse.quote(
            'maximumRecords=100&recordPacking=xml'
            + '&from=' + startdate
            + '&until=' + enddate
            + '&any=' + keyword
            + f'&startRecord={start}'
        )
        #Suchergebnisse für Signalanfragen abrufen (XML)
        obj = untangle.parse(url)

        for record in obj.data.records.record:
            speechrecord = record.recordData.speechRecord

            speechdata = speechrecord.speech.cdata.replace("\u3000"," ").replace("\n"," ")
            m = p.search(speechdata)
            if not isinstance(m,type(None)):
                date.append(speechrecord.date.cdata)
                speaker.append(speechrecord.speaker.cdata)
                speech.append(m.group(2))
                speakerGroup.append(speechrecord.speakerGroup.cdata)
                speakerPosition.append(speechrecord.speakerPosition.cdata)

        offset = int(start)-1
        index = [ offset+n for n in list(range(len(date))) ]
        adddf = pd.DataFrame({
            "date":date, 
            "speaker":speaker,
            "speech":speech,
            "speakerGroup":speakerGroup,
            "speakerPosition":speakerPosition,
          }, index=index)
        df = pd.concat([df, adddf ])

        #Da jeweils nur 100 Artikel zurückgegeben werden, ändern Sie die Startposition und senden Sie die GET-Funktion wiederholt.
        try:
            start = obj.data.nextRecordPosition.cdata
            print(f"finished: {start}")
        except:
            pass
            break

    df["date"] = pd.to_datetime(df["date"])
    return df

if __name__ == '__main__':
  
    df1 = getSpeech('Künstliche Intelligenz')
    df2 = getSpeech('AI')
    df3 = getSpeech('Große Daten')
    df4 = getSpeech('Maschinelles Lernen')

    df = pd.concat([df1,df2,df3,df4])
    #Doppelte Bemerkungen löschen
    df.drop_duplicates(subset=["date","speaker","speech"], inplace=True)
    df.sort_values(by=["date","speaker"],inplace=True)

    df.reset_index(drop=True, inplace=True)

    pd.to_pickle(df, f"{pklDir}{spt}kokkailog.pkl")
    df.to_csv(f"{pklDir}{spt}kokkailog.tsv", sep="\t")

3. Erfasste Daten

In[4]: df.tail()
Out[4]: 
#           date speaker  ...         speakerGroup speakerPosition
#4288 2019-12-05 Taku Eto...Liberaldemokratische Partei, unabhängiger Minister für Land- und Forstwirtschaft und Fischerei
#4289 2019-12-05 Masayoshi Hamada...Komei Party
#4290 2019-12-05 Naeko Ishii...Japan Restaurierungsparty
#4291 2019-12-05 Takashi Midorikawa...Verfassungsdemokratisch / National / Sozialversicherung / Unabhängiges Forum
#4292 2019-12-05 Koichi Hagita...Liberaldemokratische Partei, unabhängiger Minister für Bildung, Kultur, Sport, Wissenschaft und Technologie
#
#[5 rows x 5 columns]

Recommended Posts

Erhalten Sie Parlamentsprotokolle über API
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Holen Sie sich die Anzahl der Ziffern
Holen Sie sich die Anzahl der Ansichten von Qiita
Ruft die Attribute eines Objekts ab
Holen Sie sich das erste Element von Queryset
Holen Sie sich die Anzahl der Youtube-Abonnenten
Ermitteln Sie die Anzahl der PVs von Qiita-Artikeln, die Sie mit API veröffentlicht haben
[Verständnis in 3 Minuten] Der Beginn von Linux
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Ermitteln Sie den Wert der mittleren Schicht von NN
Holen Sie sich Urlaub mit der Google Kalender-API
Holen Sie sich den letzten Tag des angegebenen Monats
[Python] Ruft den Zeichencode der Datei ab
Holen Sie sich den Dateinamen des Verzeichnisses (glob)
[PowerShell] Lesen Sie die Zeichenfolge
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Holen Sie sich Artikelbesuche und Likes mit Qiita API + Python
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Holen Sie sich den Inhalt von Git Diff aus Python
Holen Sie sich das Wetter in Osaka über Web-API (Python)
Golang api bekommen
[Python] Ruft die Skalenbezeichnung der Figur ab / bearbeitet sie
[Python] Holen Sie sich die Hauptthemen von Yahoo News
Lassen Sie uns Wiki-Informationen mithilfe der MediaWiki-API abrufen
Holen Sie sich den Aufrufer einer Funktion in Python
[Python] Ruft das Datum der letzten Aktualisierung der Website ab
Holen Sie sich ein Zugriffstoken für die Pocket-API
Ermitteln Sie mithilfe der Twitter-API die Anzahl der Tweets, die sich auf ein bestimmtes Keyword beziehen
Holen Sie sich nur den Adressteil der Netzwerkkarte (eth0)
[Python] Holen Sie sich den Tag (Englisch & Japanisch)
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
Verwenden Sie die Spotify-API, um alle Songs von Arashis Songinformationen abzurufen und den Index zu überprüfen
Holen Sie sich den Titel der Yahoo News und analysieren Sie die Stimmung
Ruft den Variablennamen der Variablen als Zeichenfolge ab.
So ermitteln Sie die Anzahl der Stellen in Python
[Python] Ruft den offiziellen Dateipfad der Verknüpfungsdatei ab (.lnk)
Berechnen Sie den Gesamtwert mehrerer Spalten mit awk
Verwenden wir die API des allgemeinen Fensters für Regierungsstatistiken (e-Stat).
Holen Sie sich das Bild von "Suzu Hirose" von Google Bildersuche.
Holen Sie sich den absoluten Pfad des laufenden Skripts
[Python] Ruft die Liste der im Modul definierten Klassen ab
Da es viele Erdbeben gibt, erfahren Sie mehr über die Geschichte des Erdbebens
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
[C-Sprache] [Linux] Ruft den Wert der Umgebungsvariablen ab
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
Verwenden wir die Python-Version des Confluence-API-Moduls.
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
[Python] Ruft die Liste der ExifTags-Namen der Pillow-Bibliothek ab
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Verwenden Sie die Such-API der National Parliament Library in Python
[Django 2.2] Sortieren und erhalten Sie den Wert des Beziehungsziels
Holen Sie sich mit Python den Betriebsstatus von JR West
Skript zum Abrufen des Ablaufdatums des SSL-Zertifikats
[Python] Ermittelt die Anzahl der Aufrufe aller veröffentlichten Artikel
Rufen Sie die URL des HTTP-Umleitungsziels in Python ab