from enum import StrEnum from urllib.parse import urlencode from urllib.request import urlopen import bs4 class Stimme(StrEnum): ja = "Ja" nein = "Nein" na = "Nicht abg." enthalten = "Enthalten" def get_abstimmung(id): base_url = "https://www.bundestag.de/apps/na/na/namensliste.form" query = { "id": id, "ajax": True, "letter": "", "bundesland": "", "plz": "", "geschlecht": "", "alter": "", "limit": "", } url = base_url + urlencode(query) bs = bs4.BeautifulSoup( urlopen(url), "html.parser", ) for match in bs.find_all("div", attrs={"class": "bt-teaser-person-text"}): name = match.find("h3").text.strip() fraktion = match.find("p", attrs={"class": "bt-person-fraktion"}).text.strip() stimme = ( match.find("p", attrs={"class": "bt-person-abstimmung"}) .text.strip() .splitlines()[0] ) yield name, fraktion, Stimme(stimme) abstimmung_atomgesetz = list(get_abstimmung(847))