Scraper NI: Niedersachsen (StarWeb, Wahl 2027-10-10) #22

Closed
opened 2026-04-08 22:22:09 +02:00 by tobias · 3 comments
Owner

Wahltermin

2027-10-10 — Niedersachsen (NI), aktuell 19. Wahlperiode.

Backend

Feld Wert
Doku-System StarWeb
Base-URL https://www.landtag-niedersachsen.de
dokukratie-Scraper ni
Drucksachen-Format 19/12345

Adapter-Strategie

StarWeb (2/6) — Wiederverwendung des SH-StarWebAdapters, neuer Registry-Eintrag.

Was zu tun ist

  1. Live-Backend anschauen — falls SPA, HAR-Trace einer realen Suche aus DevTools ziehen (siehe Vorgehen in #12 für ParlDok bzw. #13 für eUI).
  2. Adapter in webapp/app/parlamente.py implementieren — entweder als neue Subklasse von ParlamentAdapter oder als zweiter Registry-Eintrag eines existierenden parametrisierbaren Adapters.
  3. Eintrag in der ADAPTERS-Registry am Ende der Datei.
  4. Smoke-Test lokal: ADAPTERS["NI"].search("Schule", limit=10) liefert echte Anträge mit Datum + Fraktionen, sortiert newest-first.
  5. Aktivierung via Folge-Issue (siehe Hängt mit … zusammen unten) — dieses Issue ist nur der Adapter selbst, nicht das Indexieren der Wahlprogramme oder das Frontend-aktiv-Setzen.

Akzeptanzkriterien

  • parlamente.py::ADAPTERS["NI"] existiert und ist instanziierbar
  • search(query="Schule", limit=10) liefert ≥3 echte Drucksachen mit korrektem Datum, Fraktionen, PDF-Link
  • get_document(drucksache) für eine reale Drucksache der laufenden WP liefert das Dokument zurück
  • download_text(drucksache) extrahiert Text aus dem PDF
  • Folge-Issue für Frontend-Aktivierung verlinkt
## Wahltermin **2027-10-10** — Niedersachsen (NI), aktuell 19. Wahlperiode. ## Backend | Feld | Wert | |---|---| | Doku-System | `StarWeb` | | Base-URL | https://www.landtag-niedersachsen.de | | dokukratie-Scraper | `ni` | | Drucksachen-Format | `19/12345` | ## Adapter-Strategie **StarWeb (2/6)** — Wiederverwendung des SH-StarWebAdapters, neuer Registry-Eintrag. ## Was zu tun ist 1. Live-Backend anschauen — falls SPA, HAR-Trace einer realen Suche aus DevTools ziehen (siehe Vorgehen in #12 für ParlDok bzw. #13 für eUI). 2. Adapter in `webapp/app/parlamente.py` implementieren — entweder als neue Subklasse von `ParlamentAdapter` oder als zweiter Registry-Eintrag eines existierenden parametrisierbaren Adapters. 3. Eintrag in der `ADAPTERS`-Registry am Ende der Datei. 4. Smoke-Test lokal: `ADAPTERS["NI"].search("Schule", limit=10)` liefert echte Anträge mit Datum + Fraktionen, sortiert newest-first. 5. Aktivierung via Folge-Issue (siehe `Hängt mit … zusammen` unten) — dieses Issue ist nur der Adapter selbst, nicht das Indexieren der Wahlprogramme oder das Frontend-aktiv-Setzen. ## Akzeptanzkriterien - [ ] `parlamente.py::ADAPTERS["NI"]` existiert und ist instanziierbar - [ ] `search(query="Schule", limit=10)` liefert ≥3 echte Drucksachen mit korrektem Datum, Fraktionen, PDF-Link - [ ] `get_document(drucksache)` für eine reale Drucksache der laufenden WP liefert das Dokument zurück - [ ] `download_text(drucksache)` extrahiert Text aus dem PDF - [ ] Folge-Issue für Frontend-Aktivierung verlinkt
Author
Owner

Hinweise aus dokukratie/ni.yml

StarWeb-Servlet (NILAS):

  • Endpoint: https://www.nilas.niedersachsen.de/starweb/NILAS/servlet.starweb?path=NILAS/lissh.web
  • Start-URL: https://www.nilas.niedersachsen.de/starweb/NILAS/start.html
  • Form: .//form[@name="__form"]
  • Form-Felder: Suchzeile5=DRUCKSACHE, Suchzeile6/7/8, __action=5,28, ReportFormatListDisplay=Vollanzeige,Vorgaenge
  • Items: .//table[@id="listTable"]//ul[@class="fundstelle"]/..
  • Title: .//b/text()
  • PDF: .//ul[@class="fundstelle"]/li[contains(text(), "Drucksache")][last()]/a[1]/@href

Synergie: Wiederverwendung des StarWebAdapter aus #27. Achtung: NI nutzt Suchzeile5/6/7/8 als Field-Names statt der LISSH_*-Variante von HB/BB — der Adapter braucht eine konfigurierbare Field-Name-Map pro BL.

## Hinweise aus dokukratie/ni.yml **StarWeb-Servlet** (NILAS): - Endpoint: `https://www.nilas.niedersachsen.de/starweb/NILAS/servlet.starweb?path=NILAS/lissh.web` - Start-URL: `https://www.nilas.niedersachsen.de/starweb/NILAS/start.html` - Form: `.//form[@name="__form"]` - Form-Felder: `Suchzeile5=DRUCKSACHE`, `Suchzeile6/7/8`, `__action=5,28`, `ReportFormatListDisplay=Vollanzeige,Vorgaenge` - Items: `.//table[@id="listTable"]//ul[@class="fundstelle"]/..` - Title: `.//b/text()` - PDF: `.//ul[@class="fundstelle"]/li[contains(text(), "Drucksache")][last()]/a[1]/@href` **Synergie:** Wiederverwendung des `StarWebAdapter` aus #27. Achtung: NI nutzt `Suchzeile5/6/7/8` als Field-Names statt der `LISSH_*`-Variante von HB/BB — der Adapter braucht eine konfigurierbare Field-Name-Map pro BL.
tobias added the
phase-2
scraper
labels 2026-04-08 23:16:36 +02:00
Author
Owner

Sondiert in der Phase-2-Session: nilas.niedersachsen.de/portal/ ist eine Login-Page. Das öffentliche niedersächsische Parlamentsdokumentations-Portal ist passwortgeschützt — der /portal/-Endpoint zeigt eine Anmeldemaske, jeglicher API-Aufruf ohne Session-Cookie schlägt fehl.

Optionen

  1. dokumkratie/ni.yml beschreibt das alte StarWeb-Servlet auf /starweb/NILAS/servlet.starweb?path=NILAS/lissh.web — das könnte öffentlich sein. Lohnt einen separaten Probe-Versuch. Wenn ja, eigene Adapter-Implementierung wie für SH (StarFinderCGIAdapter, eigenständig) — aber NILAS ist die moderne Variante, kein altes Starfinder.
  2. Andere öffentliche Doku-Quelle für NI finden (z.B. landtag-niedersachsen.de selbst, ohne nilas-Subdomain).
  3. Öffentlichen Zugang zu nilas anfordern — falls der Landtag einen Read-Only-Account anbietet.

Aktuell kein klarer Pfad ohne öffentliche API. Deferred bis Option 1 oder 2 verifiziert ist.

Sondiert in der Phase-2-Session: **nilas.niedersachsen.de/portal/ ist eine Login-Page**. Das öffentliche niedersächsische Parlamentsdokumentations-Portal ist passwortgeschützt — der `/portal/`-Endpoint zeigt eine Anmeldemaske, jeglicher API-Aufruf ohne Session-Cookie schlägt fehl. ## Optionen 1. **dokumkratie/ni.yml** beschreibt das **alte StarWeb-Servlet** auf `/starweb/NILAS/servlet.starweb?path=NILAS/lissh.web` — das könnte öffentlich sein. Lohnt einen separaten Probe-Versuch. Wenn ja, eigene Adapter-Implementierung wie für SH (StarFinderCGIAdapter, eigenständig) — aber NILAS ist die moderne Variante, kein altes Starfinder. 2. **Andere öffentliche Doku-Quelle für NI** finden (z.B. landtag-niedersachsen.de selbst, ohne nilas-Subdomain). 3. **Öffentlichen Zugang zu nilas anfordern** — falls der Landtag einen Read-Only-Account anbietet. Aktuell kein klarer Pfad ohne öffentliche API. Deferred bis Option 1 oder 2 verifiziert ist.
Author
Owner

Resolved in edcb4e9 + 521d940.

NILAS ist ein portala/eUI-Backend — kein neuer Adapter noetig, nur ein neuer PortalaAdapter-Eintrag + dritter Parsing-Pfad (JSON-in-HTML-Comments).

Config: bundesland=NI, db_id=lns.lissh, WP 19, /portala/, document_type=Antrag.

Smoke: search(Schule, 5) liefert 5 NI-Antraege mit Titel, Datum, Fraktionen, PDF-Link. download_text liefert 5504 chars Volltext.

UI-Aktivierung folgt in #34.

Resolved in edcb4e9 + 521d940. NILAS ist ein portala/eUI-Backend — kein neuer Adapter noetig, nur ein neuer PortalaAdapter-Eintrag + dritter Parsing-Pfad (JSON-in-HTML-Comments). Config: bundesland=NI, db_id=lns.lissh, WP 19, /portala/, document_type=Antrag. Smoke: search(Schule, 5) liefert 5 NI-Antraege mit Titel, Datum, Fraktionen, PDF-Link. download_text liefert 5504 chars Volltext. UI-Aktivierung folgt in #34.
Sign in to join this conversation.
No description provided.