Java: Wie extrahiere ich getrennte Text von verschachtelten in HTML?
-
21-12-2019 - |
Frage
Beispiel:
generasacodicetagpre.Ich arbeite an der natürlichen Sprachverarbeitung und ich muss eine Website übersetzen (nicht mit Google Translate), für die ich beide Sätze extrahieren muss "Dies ist zuerst" und "zweiter" separat, damit ich sie durch andere ersetzen kannSprachtext in den jeweiligen Diven.Wenn ich den Text für den ersten extrahieren, wird er angezeigt "Dies ist erstes zweiter" und wenn ich die Rekursion benutze, um tiefer zu graben, wird es nur "zweiter" extrahiert,
hilf mir bitte!
edit
Die Verwendung von eigenständigen () -Methoden erstellt ein Problem in der folgenden HTML-Code:
generasacodicetagpre.wird druckt:
das.
frei
Enzyklopädie
Jeder kann bearbeiten
aber es muss sein:
das
das
.
Enzyklopädie
Jeder kann bearbeiten
Lösung
Wenn ich Text für den ersten extrahieren, wird er angezeigt "Dies ist erstes zweiter"
Verwenden Sie den generationspoDicetagcode anstelle von ownText()
und Sie erhalten nur das Element direkt.
hier ist ein Beispiel:
generasacodicetagpre.Andere Tipps
Sie können XML-Parser verwenden, in welcher Sprache, in der Sie verwenden.Hier ist für Java: http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/
Es scheint, als ob Sie Textcontent in der DIV-Datei verwenden, um den Inhalt zu extrahieren, der Ihnen den Inhalt dieses Elements und alle abstauschenden Elemente erhält. (Java: Dies wäre das Gettextcontent-Verfahren zum Element)
Untersuchen Sie stattdessen die Childnodes (Java: GetChildNodes-Methode auf dem Element). Die Knoten haben eine Eigenschaft "Nodetype" (Java: Getnodetype), die Sie ansehen können, um herauszufinden, ob der Knoten ein Textknoten ist (Java: Node.Text_Node) oder ein Element (Java: Node.Ilement_node). Um das Beispiel zu nehmen, haben Sie einen Baum von Knoten, die so aussehen ...
generasacodicetagpre.Der äußere DIV enthält direkt nur zwei Knoten - das erste Text und die innere DIV. Dieser innere DIV enthält dann den Text "Sekunden".
Schleifen Sie also über die Knoten in der äußeren DIV, wenn der Knoten ein Textknoten ist, übersetzen, sonst in das Element zurückkehren. Beachten Sie, dass es andere Arten von Knoten, Kommentaren und dergleichen gibt, aber zu Ihren Zwecken können Sie diese wahrscheinlich ignorieren.
Angenommen, Sie verwenden die W3C DOM-API http://docs.oracle.com/javase /7/docs/api/org/w3c/dom/node.html
Dies sollte funktionieren, wenn Sie Jsoup HTML-Parser verwenden.