Extrahieren von Werten aus Elementattributen mit Jsoup und einer JavaScript-Stage

Fusion verfügt zwar über integrierte Jsoup-Selektorfunktionen, aber die Extraktionsmöglichkeiten sind begrenzt. Wenn Sie z.B. Attributwerte extrahieren möchten – insbesondere Attributwerte…

Fusion verfügt zwar über integrierte Jsoup-Selektorfunktionen, aber die Extraktionsmöglichkeiten sind begrenzt. Wenn Sie z.B. Attributwerte extrahieren möchten – insbesondere Attributwerte mit Sonderzeichen oder Leerzeichen in den Werten – müssen Sie eine benutzerdefinierte JavaScript-Stufe erstellen und die Extraktion dort implementieren.

Um dies zu erreichen:

1) Erstellen Sie eine benutzerdefinierte JavaScript-Stage und ordnen Sie sie direkt nach dem Apache Tika Parser an. Vergewissern Sie sich in der Apache Tika Parser-Stufe, dass sowohl „Geparsten Inhalt als XML oder HTML zurückgeben“ als auch „Original XML und HTML statt Tika XML Output zurückgeben“ markiert sind.

2) Fügen Sie Ihren Code hinzu. Für die Zwecke dieses Artikels habe ich das folgende Beispiel erstellt. Je nachdem, was Sie erreichen wollen, kann Ihr Code variieren:

function(doc) {  

    var Jsoup = org.jsoup.Jsoup;
    var content = doc.getFirstFieldValue("body");
    var jdoc = org.jsoup.nodes.Document;
    var div = org.jsoup.nodes.Element;
    var img = org.jsoup.nodes.Element;
    var iter = java.util.Iterator;
    var divs = org.jsoup.select.Elements;

    try {
        jdoc = Jsoup.parse(content);
        divs = jdoc.select("div");
        iter = divs.iterator();
        div = null; // initialize our value to null
        while (iter.hasNext()) {
            div = iter.next();
            if (div.attr("id").equals("featured-img")) {
                break;
            }
        }
        if (div != null) {
            img = div.child(0);
            logger.info("SRC: " + img.attr("src"));
            logger.info("ORIG FILE: " + img.attr("data-orig-file"));
            doc.addField("post_image", img.attr("src") + " | " + img.attr("data-orig-file"));
        }
        else {
            logger.warn("Div was null");
        }
    }
    catch (e) {
        logger.error(e);
    }
    return doc;
}

Schauen wir uns also an, was hier passiert:

1) Deklarieren Sie Java-Klassen und JavaScript-Variablen, die verwendet werden sollen. Beachten Sie, dass wir der Variable content den Inhalt zuweisen, der vom Apache Tika Parser gezogen wird

var Jsoup = org.jsoup.Jsoup;
var content = doc.getFirstFieldValue("body");
var doc = org.jsoup.nodes.Document;
var div = org.jsoup.nodes.Element;
var img = org.jsoup.nodes.Element;
var iter = java.util.Iterator;
var divs = org.jsoup.select.Elements;

2) Als nächstes ziehen wir die „div“-Elemente heraus und suchen nach einem mit der ID „featured-img“. Sobald wir es gefunden haben, brechen wir die Iteration ab und machen weiter. Hinweis: Ich verwende diese Art von Beispiel, um zu zeigen, wie man mit Elementattributwerten arbeitet, die Sonderzeichen oder Leerzeichen enthalten. Die Selektorsyntax von Jsoups funktioniert nicht wirklich gut mit diesen Arten von Schlüsselnamen.

 doc = Jsoup.parse(content); // parse the document
             divs = doc.select("div"); // select all the 'div' elements
             iter = divs.iterator(); // get an iterator for the list
            while (iter.hasNext()) { // iterate over the elements
                div = iter.next();
                if (div.attr("id").equals("featured-img")) { // if we find a match, assign and move on. 
                    break;
                }
            }

3) Schließlich legen wir die Werte im Dokument fest. Ich habe hier eine zusätzliche Protokollierung eingefügt, die letztendlich entfernt werden kann.

   if (div != null) {
                 img = div.child(0); // get the image element
                logger.info("SRC: " + img.attr("src"));
                logger.info("ORIG FILE: " + img.attr("data-orig-file"));
                doc.addField("post_image", img.attr("src") + " | " + img.attr("data-orig-file")); // set the values in the PipelineDocument
            } else {
                logger.warn("Div was null");
            }

Und das war’s dann auch schon! Viel Spaß beim Extrahieren!

You Might Also Like

Analytics Studio: Verwandeln Sie Ihre E-Commerce-Daten in verwertbare Einblicke

Entdecken Sie, wie Analytics Studio Teams in die Lage versetzt, datengestützte Entscheidungen...

Read More

Wenn KI schief geht: Fehlschläge in der realen Welt und wie man sie vermeidet

Lassen Sie nicht zu, dass Ihr KI-Chatbot einen 50.000 Dollar teuren Tahoe...

Read More

Lucidworks Kernpakete: Branchenoptimierte KI-Such- und Personalisierungslösungen

Entdecken Sie unsere umfassenden Core Packages, die Analytics Studio, Commerce Studio und...

Read More

Quick Links