📜

GRAPRATH

Gemeinde-Ratsprotokolle Archivierer für Herzogenrath

📋 Beschreibung

GRAPRATH ist ein Python-basiertes System zum automatisierten Herunterladen und Archivieren von kommunalen Ratsprotokollen und Vorlagen aus dem ALLRIS-System der Stadt Herzogenrath. Das Projekt bietet mehrere Scraper-Implementierungen mit unterschiedlichen Ansprüchen - von einfachen PDF-Downloads bis hin zu RAG-optimierter Datenextraktion mit vollständigen Metadaten.

🎯 Hauptfunktionen

  • Multi-Source Scraping: Kombiniert OParl-API, RSS-Feeds und Selenium für maximale Datenvollständigkeit
  • RAG-optimierte Metadaten: Strukturierte JSON-Metadaten für Retrieval-Augmented Generation Systeme
  • Intelligente Dateibenennung: Enthält Gremium, Datum, Vorlagennummer, Thema und Hash
  • Beratungsfolgen-Tracking: Erfasst alle Gremien, die ein Dokument behandelt haben
  • Automatische Deduplizierung: Überspringt bereits vorhandene Dateien
  • Retry-Logik: Automatische Wiederholung bei Netzwerkfehlern

🛠️ Technologien

Python 3.6+ Hauptsprache für alle Scraper
requests HTTP-Client für API-Zugriffe
BeautifulSoup4 HTML-Parsing und Datenextraktion
Selenium Browser-Automation für JavaScript-lastige Seiten
webdriver-manager Automatische ChromeDriver-Verwaltung
OParl-API Schneller Zugriff auf strukturierte Daten
RSS-Feeds sifuture/sipast für Sitzungen und Vorlagen

📁 Projektstruktur

graprath/
├── herzogenrath_pdfs/           # Heruntergeladene PDF-Dateien
├── herzogenrath_metadata/       # JSON-Metadaten pro PDF
├── .venv/                       # Python Virtual Environment
├── herzogenrath_pdf_downloader.py     # Basis-Downloader (einfach)
├── rag_pdf_downloader.py              # RAG-optimierter Downloader
├── rag_complete_scraper.py            # Vollständiger Multi-Source Scraper
├── selenium_pdf_downloader.py         # Selenium-basierter Downloader
├── alternative_pdf_downloader.py      # Alternative Implementierung
├── direkter_pdf_downloader.py         # Direkter Zugriff
├── direkter_pdf_downloader_v2.py      # Direkter Zugriff v2
├── test_oparl.py                      # OParl-API Tests
├── test_oparl_sitzungen.py            # OParl Sitzungs-Tests
├── test_rss_feeds.py                  # RSS-Feed Tests
├── requirements.txt                   # Python-Abhängigkeiten
├── README.md                          # Basis-Dokumentation
├── README_RAG.md                      # RAG-spezifische Dokumentation
├── README_firefox.md                  # Firefox/Selenium Guide
├── README_selenium.md                 # Selenium Dokumentation
└── rag_pdf_downloader.log             # Download-Logs
                

📊 Dateinamen-Schema (RAG-Version)

Das RAG-System erstellt strukturierte Dateinamen:

{gremiumstyp}_{datum}_{vorlagennummer}_{thema}_{dokumenttyp}_{hash}.pdf

Beispiel:

ratssitzung_2025-03-25_V-2025-086_zuschuesse_wohlfahrtsverbaende_vorlage_a1b2c3.pdf ausschuss_2025-03-20_arbeit_soziales_sammeldokument_b2c3d4.pdf

🔧 Verwendung

Basis-Downloader:

python herzogenrath_pdf_downloader.py

RAG-optimierter Downloader:

python rag_pdf_downloader.py

Vollständiger Scraper:

python rag_complete_scraper.py

📈 Features im Detail

Feature Basis RAG Complete
OParl-API Support
RSS-Feed Integration
Selenium Fallback
JSON-Metadaten
Beratungsfolgen
Strukturierte Dateinamen
Alle Gremien Teilweise

🌐 Datenquellen

  • Ratsinfo Website: https://ratsinfo.herzogenrath.de
  • OParl API: Standardisierte API für kommunale Informationssysteme
  • RSS-Feeds: sifuture/sipast für aktuelle und vergangene Sitzungen