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: Option, um Seiteninhalte ohne den „header“ abzurufen:
{
"onlyMainContent": false,
"excludeTags": [
"header"
]
}
Komplexe dynamische Webseiten scrapen
Szenario: Das ABC-Unternehmen führt eine FAQ-Seite (https://abc-unternehmen.com/de/faq). Die Antworten werden 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 man AI Actions ausgeführt werden, um dieses Verhalten abzubilden. Dabei wird ein Klick auf die Kategorie simuliert. Anschließend werden 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.
Beispiel JSON
Für die allgemeine FAQ-Webseite:
"actions": [
{
"type": "executeJavascript",
"script": "document.querySelectorAll(\"div.cursor-pointer.justify-between\").forEach(element => { element.click(); });"
},
{
"type": "wait",
"milliseconds": 5000
}
]
Für jede weitere Kategorie:
{
"includeTags": [
".gap-3"
],
"actions": [
{
"type": "executeJavascript",
"script": "document.querySelectorAll(\"div.webkit-tap-transparent.cursor-pointer\")[1].click();"
},
{
"type": "executeJavascript",
"script": "document.querySelectorAll(\"div.cursor-pointer.justify-between\").forEach(element => { element.click(); });"
},
{
"type": "wait",
"milliseconds": 5000
}
]
}