Który Parser HTML jest najlepszy? [zamknięte]

Koduję wiele parserów. Do tej pory używałem HtmlUnit Headless browser do parsowania i automatyzacji przeglądarki.

Teraz chcę oddzielić oba zadania.

Ponieważ 80% mojej pracy wymaga tylko parsowania, chcę użyć lekkiego parsera HTML, ponieważ zajmuje dużo czasu w HtmlUnit, aby najpierw załadować stronę, a następnie uzyskać źródło, a następnie przeanalizować ją.

Chcę wiedzieć, który parser HTML jest najlepszy. Parser byłby lepszy, jeśli jest blisko HtmlUnit parser.


EDIT:

By best, I want conajmniej the following features:

  1. Speed
  2. łatwość lokalizowania dowolnego elementu HtmlElement według jego "id", "nazwa " lub"typ znacznika".

Byłoby dla mnie ok, gdyby nie wyczyścił brudnego kodu HTML. Nie muszę czyścić żadnego źródła HTML. Potrzebuję tylko najprostszego sposobu, aby przejść przez HtmlElements i pobierać z nich dane.

Author: Tiny, 2010-01-30

3 answers

Self plug: właśnie wydałem Nowy parser HTML Javy: jsoup . Wspominam o tym tutaj, bo myślę, że to zrobi to, co chcesz.

Jego party trick to składnia selektora CSS do znajdowania elementów, np.:

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();

Zobacz Selektor javadoc aby uzyskać więcej informacji.

Jest to nowy projekt, więc wszelkie pomysły na poprawę są bardzo mile widziane!

 364
Author: Jonathan Hedley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-04 13:48:23

Najlepsze jakie do tej pory widziałem to HtmlCleaner :

HtmlCleaner to otwarty parser HTML napisany w Javie. HTML znaleziony w sieci jest zwykle brudny, źle uformowany i nieodpowiedni do dalszego przetwarzania. W przypadku poważnego zużycia takich dokumentów konieczne jest najpierw posprzątanie bałaganu i uporządkowanie tagów, atrybutów i zwykłego tekstu. Dla danego dokumentu HTML, HtmlCleaner zmienia kolejność poszczególnych elementów i tworzy dobrze uformowany XML. Domyślnie następuje podobne reguły używane przez większość przeglądarek internetowych do tworzenia modelu obiektowego dokumentu. Jednak użytkownik może dostarczyć niestandardowy tag i zestaw reguł do filtrowania i równoważenia tagów.

Z HtmlCleaner można zlokalizować dowolny element za pomocą XPath.

Dla innych parserów html zobacz to pytanie .

 29
Author: tangens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:20

Proponuję Validator.nu parser, oparty na algorytmie parsowania HTML5. Jest to parser używany w Mozilli od 2010-05-03

 5
Author: Ms2ger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-13 16:42:44