Webscraping optimieren
Ressourcenoptimierung mit JSON-basierten Webscraping-Regeln für statische und dynamische Webseiten
- Webscraping Optionen hinterlegen
- Verfügbare Webscraping Optionen
- Komplexe dynamische Webseiten scrapen
Der erfolgreiche Einsatz generativer KI hängt stark von der Datengrundlage ab. Diese sollte aufgeräumt, strukturiert und vollständig sein. Irrelevante und doppelte Inhalte führen zu schlechteren Ergebnissen bei der Antwort-Generierung.
Für das Auslesen von Web-Ressourcen können im moinAI Hub Webscraping Optionen gesetzt werden. So werden relevante Inhalte ausgelesen und irrelevante Inhalte ausgeschlossen. So ist eine aufgeräumte und konkrete Datengrundlage sichergestellt.
Das Customer Success Team berät gerne bei der Optimierung und unterstützt bei der Umsetzung. Im Folgenden ist beschrieben, wie Webscraping Optionen hinterlegt werden können und welche Optionen verfügbar sind.
Webscraping Optionen hinterlegen
Die Webscraping Optionen können auf Ressourcen-Ebene und Bot-Ebene editiert werden. Im Folgenden sind beide Varianten beschrieben.
Zentral für alle Ressourcen hinterlegen
Webscraping Optionen für alle abgelegten und künftigen Ressourcen werden zentral über den Menüpunkt Bot Einstellungen -> Generelles & Datenschutz im Bereich Allgemeine Webscraping Optionen hinterlegt.


Auch benutzerdefinierte Header-Einstellungen sind möglich. Hier berät das Customer Success Team gerne bei der Umsetzung.
Für einzelne Ressource hinterlegen
Webscraping Optionen für einzelne Ressourcen werden über den Menüpunkt Knowledge Base hinterlegt. Hierzu wird einzeln für jede Ressource über das Drei-Punkte-Menü hinten rechts an der Ressource auf Optionen geklickt.

Anschließend öffnet sich ein Fenster, in dem die Webscraping Optionen hinterlegt werden.
inkl. allg. Optionen-Button
- Ausgeschaltet: Nur der abgelegte JSON-Code wirkt sich auf die Ressource aus.
- Angeschaltet: Zusätzlich wirkt sich die Webscraping Option aus Bot Einstellungen > Generelles & Datenschutz auf die Ressource aus.
In das Feld wird JSON-Code eingefügt. Mit einem Klick auf Speichern werden die Änderungen übernommen. Alle betroffenen Ressourcen werden neu eingelesen. Dieser Vorgang dauert einige Minuten.

Bulk-Anpassung
Soll das Webscraping für mehrere Ressourcen gleichzeitig sangepasst werden, eignet sich die Bulk-Anpassung.
1. Alle Ressourcen auswählen:- Im Menü Knowledge Base wird unten rechts “Zeilen pro Seite: alle" eingestellt.
- Anschließend oben links am Anfang der Ressourcen-Liste mit einem Haken alle Ressourcen auswählen.


- Einzeln Ressourcen über die Checkbox links mit einem Klick auswählen.

Sind die gewünschten Ressourcen ausgewählt, öffnet sich über den Button Optionen oben rechts ein Fenster. Dort können die Webscraping Optionen definiert werden.

inkl. allg. Optionen-Button
- Ausgeschaltet: Nur der abgelegte JSON-Code wirkt sich auf die Ressource aus.
- Angeschaltet: Zusätzlich wirkt sich die Webscraping Option aus Bot Einstellungen > Generelles & Datenschutz auf die Ressource aus.
In das Feld wird JSON-Code eingefügt. Mit einem Klick auf Speichern werden die Änderungen übernommen. Alle betroffenen Ressourcen werden neu eingelesen. Dieser Vorgang dauert einige Minuten.

Mit einem Klick auf den Auge-Button rechts neben einer Ressource kann kontrolliert werden, ob die relevanten Inhalte korrekt eingelesen wurden.

Verfügbare Webscraping Optionen
Im Folgenden werden einige Webscraping-Parameter für den Experten-Modus beim Hinzufügen von Ressourcen/Quellen in der moinAI Knowledge Base beschrieben. In diesem Artikel ist beschrieben, wie eine Ressource hinzugefügt wird.
Diese Einstellungen helfen, die spezifischen Teile des Webseiteninhalts zu kontrollieren, die in den Extraktionsprozess einbezogen oder ausgeschlossen werden sollen.
- includeTags: Diese Option ermöglicht die Angabe, welche HTML-Tags in die Ausgabe aufgenommen werden sollen. Wenn z.B. nur Inhalte innerhalb der
<p>- und<h1>-Tags extrahiert werden sollen, lautet die Angabe : [„p“, „h1“]. - excludeTags: Diese Option ermöglicht die Angabe, welche HTML-Tags von der Ausgabe ausgeschlossen werden sollen. Wenn z. B. alle
<script>- und<style>-Tags aus dem extrahierten Inhalt entfernen möchten, lautet die Angabe: [„script“, „style“]. - onlyMainContent: Dieser Parameter stellt sicher, dass nur der Hauptinhalt der Webseite zurückgegeben wird, ohne Kopfzeilen, Navigationsleisten, Fußzeilen und andere unwesentliche Elemente. Er ist nützlich, um die Kerninformationen einer Webseite ohne zusätzlichen Ballast zu extrahieren. Manchmal kann der Parameter zu restriktiv sein. Wenn wichtige Inhalte auf der Seite fehlen, kann der Parameter „false“ gesetzt werden. Die Voreinstellung ist „true“.
Beispiel JSON: Option, um Seiteninhalte ohne den „header“ abzurufen
{
"onlyMainContent": false,
"excludeTags": [
"header"
]
}

Komplexe dynamische Webseiten scrapen
Viele moderne Webseiten laden Inhalte erst dynamisch nach einer Benutzerinteraktion. So werden etwa Antworten im FAQ-Bereich erst nach einem Klick auf die jeweilige Frage geladen. Zusätzlich wechseln die Kategorien dynamisch nach jedem Klick.
Ein normales Scraping der Webseite ist in diesem Fall nicht möglich. Mit moinAI kann das Auslesen um Regeln und Aktionen ergänzt werden, um dynamische Inhalte zu erfassen. Dabei wird ein Klick auf die Kategorie simuliert oder alle Fragen per Klick geöffnet.
Da nach dem Klick der Wechsel der Kategorie angestoßen wird und die Fragen und Antworten jeweils neu geladen und überlagert werden, muss für jede Kategorie eine eigene Ressource in der Knowledge Base angelegt werden.
Um dynamische Inhalte zu erfassen, wird eine Kombination aus executeJavascript (Interaktion) und einem wait-Schritt (Warten auf das Rendering/AJAX-Requests) benötigt.
Die Nutzung von Skripting Selektoren wie [aria-expanded="false"] stellt sicher, dass nur geschlossene Elemente angeklickt werden. Ohne diesen Check würden bereits geöffnete Akkordeons durch einen erneuten Klick wieder geschlossen werden.
So erstellen Nicht-Entwickler einen passenden Code: Ein allgemeiner Chatbot wie ChatGPT, Gemini oder Perplexity wird beauftragt, einen Code zu erstellen, der die gewünschte Regel umsetzt. Dafür wird die URL der auszulesenden Website mitgegeben und der Link zu dieser Anleitung.
Beispiel JSON: Befehl zum Ausklappen von Inhalten auf der FAQ-Webseite
Dieses Snippet öffnet alle sichtbaren Fragen. Es nutzt einen spezifischen Selektor und stellt sicher, dass nur geschlossene Elemente getriggert werden.
“actions”: [
{
“type”: “executeJavascript”,
“script”: “document.querySelectorAll(‘div.cursor-pointer.justify-between[aria-expanded=\“false\“], button[aria-expanded=\“false\“]’).forEach(el => el.click());”
},
{
“type”: “wait”,
“milliseconds”: 5000
}
]
Beispiel JSON: Befehl zum Ausklappen von Inhalten einer Kategorie auf der FAQ-Webseite
Hier wird zuerst die gewünschte Kategorie angesteuert und anschließend der "Ausklapp-Befehl" für die Fragen ausgeführt.
{
“includeTags”: [ “.gap-3" ],
“actions”: [
{
“comment”: “Schritt 1: Kategorie auswählen (z.B. das zweite Element)“,
“type”: “executeJavascript”,
“script”: “document.querySelectorAll(‘div.webkit-tap-transparent.cursor-pointer’)[1].click();”
},
{
“comment”: “Schritt 2: Alle nun geladenen Fragen ausklappen”,
“type”: “executeJavascript”,
“script”: “document.querySelectorAll(‘div.cursor-pointer.justify-between[aria-expanded=\“false\“]’).forEach(el => el.click());”
},
{
“type”: “wait”,
“milliseconds”: 5000
}
]
}
Hinweise für die Umsetzung
- Selektor-Präzision: Der Standard-Tag
buttonreicht oft aus. Falls das Menü oder ungewollte Elemente mitgeklappt werden, verwenden Sie spezifischere CSS-Klassen (z. B..accordion-title) oder nutzen Sie.slice(1), um das erste Element (oft das Header-Menü) zu überspringen. - Wartezeiten (Wait): * Ein Wert zwischen 2000ms und 5000ms ist essenziell. Wählen Sie eine längere Zeit (5000ms), wenn die Seite viele Animationen nutzt oder Daten langsam über eine API nachlädt.
- Ausschlüsse: Wenn bestimmte Sektionen nicht gescrapt werden sollen, filtern Sie die Elemente im JavaScript gezielt nach Klassen, bevor Sie
.forEach(el => el.click())ausführen. - Vermeidung von Duplikaten: Durch den Check auf
aria-expanded="false"verhindern Sie Fehler beim Re-Scraping und sorgen für einen stabilen Prozess.