Scraper HE: Hessen (StarWeb, Wahl 2028-10-22) #24
Labels
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: tobias/gwoe-antragspruefer#24
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wahltermin
2028-10-22 — Hessen (HE), aktuell 21. Wahlperiode.
Backend
StarWebhe21/1234Adapter-Strategie
StarWeb (3/6) — Wiederverwendung. Hinweis: HE nutzt
starweb.hessen.de/starweb/LISmit explizitemLIS-Suffix; vermutlich braucht der Adapter einenpath_prefix-Parameter.Was zu tun ist
webapp/app/parlamente.pyimplementieren — entweder als neue Subklasse vonParlamentAdapteroder als zweiter Registry-Eintrag eines existierenden parametrisierbaren Adapters.ADAPTERS-Registry am Ende der Datei.ADAPTERS["HE"].search("Schule", limit=10)liefert echte Anträge mit Datum + Fraktionen, sortiert newest-first.Hängt mit … zusammenunten) — dieses Issue ist nur der Adapter selbst, nicht das Indexieren der Wahlprogramme oder das Frontend-aktiv-Setzen.Akzeptanzkriterien
parlamente.py::ADAPTERS["HE"]existiert und ist instanziierbarsearch(query="Schule", limit=10)liefert ≥3 echte Drucksachen mit korrektem Datum, Fraktionen, PDF-Linkget_document(drucksache)für eine reale Drucksache der laufenden WP liefert das Dokument zurückdownload_text(drucksache)extrahiert Text aus dem PDFHinweise aus dokukratie/he.yml
StarWeb-Servlet (LIS = Landesinformationssystem):
http://starweb.hessen.de/starweb/LIS/servlet.starweb?path=LIS/PdPi.web?path=LIS/PdPi_FLMore20.webWPDatabase(legislative_term)dokumenttyp(document_type)zeitraum_von/zeitraum_bis__action=69(search),__action=262(next page)status=X.//tbody[@starweb_type="Record Repeater"].//span[@name="OFR_Drs"].//span[@name="OFR_Initiator"].//span[@name="OFR_Betreff"].//span[@name="OFR_Betreff"]/a/@onclick(JavaScript-onclick, nicht klassisches href).//a[contains(text(), "Originaldokument als PDF-Datei")]Synergie: Wiederverwendung
StarWebAdapteraus #27. HE braucht http (kein https) und hat eigene Form-Field-Namen (WPDatabase statt LISSH_WP, zeitraum_von statt FASTDATV).Sondiert in
02ff142, Adapter wird nur leicht anders.starweb.hessen.de läuft auch auf dem portala/eUI-Backend (nicht das alte StarWeb-Servlet). Endpoint
/portal/browse.tt.json, db_idhlt.lis. Source-Probe lieferte 10871 Treffer für WP21 ohne Filter.Was nicht klappt mit dem unmodifizierten PortalaAdapter
TYP=DOKDBE-Filter wird vom HE-Server abgelehnt — durchtyp_filter=Nonein Konstruktor (Phase-2-Erweiterung, Commit02ff142) lösbar(DAT,DDAT,SDAT= ...)-Datumsfilter wird abgelehnt — durchomit_date_filter=Truelösbar<h3 class="h5">...</h3>(kein<span>-Wrapper wie BE/BB)Drucks. 21/1424im Title (mit Punkt, ohne<a>-Link)<span class="h6">für Doctype/Datum/Urheber-Meta<span class="font-weight-semibold">Ausschusssitzung</span>Mein bestehender BE-Card-Parser greift daher nicht.
Was zu tun ist
PortalaAdapter._parse_hit_list_cards()um eine HE-Variante erweitern: alternative Title-Regex ohne span-Wrap, Drucksachen-Pattern aufDrucks\.\s+(\d+/\d+)erweitern, Datum/Urheber aus dem Card-Body extrahieren statt aus h6.Estimated effort: 1-2h reine Parser-Arbeit, plus pytest-Fixture aus dem HE-Card-HTML. Ist im Working-Tree bereits ein PortalaAdapter-Eintrag mit
typ_filter=None, omit_date_filter=Truevorgemerkt — der wurde wieder rausgenommen, weil er ohne Parser-Fix 0 Treffer liefern würde.Erledigt durch Roadmap Phase H / Commit
4a8986e. EigenständigeStarWebHEAdapter-Klasse, 2-Step-Pipeline, Perl-Dump-Card-Parser. Live verifiziert: 5 WP21-Anträge inkl. Berichtsanträgen mit korrekten GRÜNE-Fraktionen und PDF-Links.