Wie kann ich HTML effizient mit Java parsen?

Lesezeit: 2 Minuten

Wie kann ich HTML effizient mit Java parsen
Yatendra

Ich mache viel HTML-Parsing in meiner Branche. Bisher habe ich den Headless-Browser HtmlUnit zum Parsen und zur Browserautomatisierung verwendet.

Jetzt möchte ich beide Aufgaben trennen.

Ich möchte einen leichten HTML-Parser verwenden, da es in HtmlUnit viel Zeit in Anspruch nimmt, zuerst eine Seite zu laden, dann die Quelle abzurufen und sie dann zu analysieren.

Ich möchte wissen, welcher HTML-Parser HTML effizient analysieren kann. Ich brauche

  1. Geschwindigkeit
  2. Einfaches Auffinden von HTML-Elementen anhand ihrer „ID“, ihres „Namens“ oder ihres „Tag-Typs“.

Es wäre für mich in Ordnung, wenn es den schmutzigen HTML-Code nicht säubert. Ich muss keine HTML-Quellen bereinigen. Ich brauche nur einen einfachsten Weg, um mich über HtmlElements zu bewegen und Daten von ihnen zu sammeln.

  • Die Langsamkeit kann auftreten, wenn der Parser DTDs und/oder XSDs aus dem Internet herunterlädt.

    – Thorbjørn Ravn Andersen

    1. Oktober 2015 um 15:30 Uhr

Wie kann ich HTML effizient mit Java parsen
Jonathan Hedley

Selbstplugin: Ich habe gerade einen neuen Java-HTML-Parser veröffentlicht: Suppe. Ich erwähne es hier, weil ich denke, es wird das tun, wonach Sie suchen.

Sein Partytrick ist eine CSS-Selektorsyntax, um Elemente zu finden, z.

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Elements links = doc.select("a");
Element head = doc.select("head").first();

Siehe die Wähler javadoc für weitere Informationen.

Dies ist ein neues Projekt, daher sind Verbesserungsideen sehr willkommen!

1646242927 624 Wie kann ich HTML effizient mit Java parsen
Tangens

Das Beste, was ich bisher gesehen habe, ist HtmlCleaner:

HtmlCleaner ist ein in Java geschriebener Open-Source-HTML-Parser. Im Web gefundenes HTML ist normalerweise schmutzig, schlecht formatiert und für die weitere Verarbeitung ungeeignet. Für jeden ernsthaften Konsum solcher Dokumente ist es notwendig, zuerst das Durcheinander zu beseitigen und Ordnung in Tags, Attribute und gewöhnlichen Text zu bringen. Für das angegebene HTML-Dokument ordnet HtmlCleaner einzelne Elemente neu und erzeugt wohlgeformtes XML. Standardmäßig folgt es ähnlichen Regeln, die die meisten Webbrowser verwenden, um ein Dokumentobjektmodell zu erstellen. Der Benutzer kann jedoch benutzerdefinierte Tags und Regelsätze für die Tag-Filterung und den Tag-Ausgleich bereitstellen.

Mit HtmlCleaner können Sie jedes Element mit XPath finden.

Für andere HTML-Parser siehe diese SO-Frage.

  • Sie müssen den Proxy selbst handhaben und dann stattdessen HtmlCleaner verwenden, um Ihren Stream zu verarbeiten. => Es ist nicht bequem. T__T

    – Entführung 1991

    4. Oktober 2016 um 2:40 Uhr

  • Wäre HTMLTidy hier nicht die bessere Option? html-tidy.org

    – Troy Witthoeft

    25. Oktober 2016 um 12:03 Uhr


  • Similar rules that the most of web browsers use – Das ist nicht sehr überzeugend

    – pguardiario

    5. Juli 2017 um 3:30 Uhr

1646242927 805 Wie kann ich HTML effizient mit Java parsen
Ms2ger

Ich schlage vor Der Parser von Validator.nubasierend auf dem HTML5-Parsing-Algorithmus. Es ist der Parser, der seit dem 03.05.2010 in Mozilla verwendet wird

  • Ich habe das ausprobiert und fand es super schwer zu benutzen. Sehr wenig Dokumentation / Support.

    – Ryan Shillington

    3. Januar 2014 um 18:27 Uhr

914530cookie-checkWie kann ich HTML effizient mit Java parsen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy