🌐 Website Grabber – Intelligenter Ratsinformations-Crawler

Automatisiertes Scraping kommunaler Daten.mit Python, Selenium & BeautifulSoup

Python 3.12SeleniumBeautifulSoupMD5-DedupWicket

🚀 Bereit für Ihre digitale Transformation?

Vereinbaren Sie ein unverbindliches Strategiegespräch

📞 02406 803 7603 ✉️ info@computerkumpel.de

📊 Business Value

Manuelles Durchsuchen von Ratsinformationssystemen ist zeitaufwändig und fehleranfällig. Dieser Crawler automatisiert den kompletten Prozess: Von der Seitenerkennung über JavaScript-Rendering bis zum strukturierten PDF-Download mit intelligenter Deduplizierung.

⏱️
Zeitersparnis
Hunderte Vorlagen und PDFs automatisch in Minuten statt Stunden manueller Recherche herunterladen.
🧠
Intelligente Deduplizierung
MD5-Hash-basierte Erkennung verhindert doppelte Downloads – kein Speicherplatz verschwendet.
🌐
JavaScript-Support
Selenium-Integration für dynamische Seiten mit Wicket/AJAX – kein manuelles Klicken mehr nötig.
📈
Skalierbar
Konfigurierbare Seitenanzahl, parallele Verarbeitung möglich. Von 10 bis 10.000 Vorlagen.

⚙️ Funktionsweise – Vierstufige Pipeline

1
🔍

Discovery

Crawler analysiert die Ratsinfo-Startseite, erkennt Paginierung und Wicket-basierte Navigation automatisch.

2
🌐

Rendering

Bei JavaScript-lastigen Seiten übernimmt Selenium mit Chrome Headless das Rendering. Cookie-Banner werden automatisch geschlossen.

3
📄

PDF-Extraktion

Erkennt Wicket-Resource-Links, Anlagen und direkte PDF-Verweise. Validiert PDF-Signatur vor Download.

4
📁

Strukturierte Ablage

PDFs werden mit Vorlagen-ID benannt in html/- und pdfs/-Ordnern abgelegt. JSON-Zusammenfassung aller Downloads.

💻 Technische Architektur

Der Crawler nutzt einen mehrstufigen Ansatz: Erst wird die direkte Wicket-AJAX-API angefragt, bei Misserfolg übernimmt Selenium das JavaScript-Rendering. BeautifulSoup parst alle HTML-Inhalte.

🐍
Python 3.12+
Objektorientierte Architektur mit Klasse HerzogenrathCrawler. Modular, typisiert, erweiterbar.
🕷️
Multi-Strategy
3 Fallback-Strategien: Direkte AJAX-API → Selenium Headless → Manueller Request. Maximale Erfolgsquote.
🔒
Lokal & Sicher
Alle Daten bleiben lokal. Keine Cloud-Abhängigkeit. PDF-Hashes verhindern Datenlecks durch Duplikate.
📦
Virtual Environment
Isolierte Python-venv mit Selenium, BeautifulSoup, Requests – reproduzierbar und sauber gekapselt.

📝 Code-Snippets aus der Praxis

Session-Management mit realistischen Browser-Headers

def get_session(self):
    session = requests.Session()
    session.headers.update({
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...',
        'Accept': 'text/html,application/xhtml+xml,...',
        'Accept-Language': 'de-DE,de;q=0.9,en;q=0.8',
    })
    return session

PDF-Download mit Duplikatserkennung via MD5-Hash

def download_pdf(self, pdf_url, vorlage_id="unknown"):
    content = self.session.get(pdf_url).content
    if not content[:4] == b'%PDF':  # PDF-Signatur prüfen
        return False
    content_hash = hashlib.md5(content).hexdigest()
    if content_hash in self.pdf_hashes:  # Duplikat?
        return False
    self.pdf_hashes.add(content_hash)
    filename = f"pdfs/{vorlage_id}.pdf"
    with open(filename, 'wb') as f:
        f.write(content)
    return True

Selenium mit Cookie-Banner-Handling im Headless-Mode

def get_page_content_selenium(self, url):
    self.driver.get(url)
    # Cookie-Banner automatisch schließen
    try:
        cookie_btn = WebDriverWait(self.driver, 2).until(
            EC.element_to_be_clickable((By.ID, "cookieMessageBtn"))
        )
        cookie_btn.click()
    except: pass
    # Auf "Anzeigen"-Button für dynamische Inhalte warten
    try:
        search_button = self.driver.find_element(By.ID, "searchButton")
        search_button.click()
        time.sleep(2)
    except: pass
    return self.driver.page_source

🚀 In Tagen zum MVP — nicht in Monaten

📞 02406 803 7603 ✉️ info@computerkumpel.de

🎯 Einsatzszenarien & strategische Perspektiven

🏛️

Kommunale Transparenz

Automatisierte Archivierung aller Ratsvorlagen einer Kommune. Ideal für Journalisten, Bürgerinitiativen, politische Analyse.

Open Government Data maschinenlesbar machen.

🔄

Generalisierbarkeit

Die Crawler-Architektur ist nicht auf Herzogenrath beschränkt. Jedes Wicket-basierte Ratsinfo-System kann gecrawlt werden.

Einmal gebaut, vielfach eingesetzt.

📊

Datenanalyse-Pipeline

Heruntergeladene Dokumente bilden die Basis für NLP-Analysen: Themenerkennung, Sentiment, Trendanalyse über Zeiträume.

Rohdaten sind der Treibstoff für KI.

🤖

KI-gestütztes Monitoring

Periodisches Crawling + LLM-basierte Zusammenfassungen = automatischer Monitoring-Dienst für kommunale Entwicklungen.

Von reaktiv zu proaktiv durch Automatisierung.

Eigenen Web-Crawler benötigt?

Ob Ratsinformationssysteme, Produktdaten, Preisvergleiche oder Dokumentenarchive – ich baue Ihren maßgeschneiderten Crawler. Python, Selenium, Playwright – was Ihre Zielseite braucht.

📞 Jetzt anrufen ✉️ E-Mail senden