Domanda

I codificare un sacco di parser. Fino ad ora, stavo usando HtmlUnit del browser senza testa per l'analisi e l'automazione del browser.

Ora, voglio separare entrambi i compiti.

80% del mio lavoro coinvolge solo l'analisi, voglio usare un parser HTML luce perché ci vuole molto tempo in HtmlUnit al primo carico di una pagina, quindi ottenere la fonte e quindi analizzarlo.

Voglio sapere quale parser HTML è il migliore. Il parser sarebbe meglio se è vicino alla HtmlUnit parser.


Modifica

Per meglio, voglio che almeno le seguenti caratteristiche:

  1. Velocità
  2. Facilità di individuare qualsiasi HtmlElement dal suo "id" o "nome" o "tipo di variabile".

Sarebbe bene per me se non pulisce il codice HTML sporco. Non ho bisogno di pulire qualsiasi sorgente HTML. Ho solo bisogno di un modo più semplice per muoversi attraverso HtmlElements ei dati del raccolto da loro.

È stato utile?

Soluzione

spina Auto: Ho appena rilasciato un nuovo parser Java HTML: jsoup . Cito qui perché penso che farà ciò che siete dopo.

Il suo trucco partito è una sintassi selettore CSS trovare elementi, per esempio:.

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

Selettore javadoc per maggiori informazioni.

Si tratta di un nuovo progetto, in modo da tutte le idee di miglioramento sono molto benvenuti!

Altri suggerimenti

Il migliore che ho visto finora è HtmlCleaner :

  

HtmlCleaner è open-source HTML parser scritto in Java. HTML trovato sul Web di solito è sporco, mal formati e inadatto per l'ulteriore elaborazione. Per qualsiasi consumo serio di tali documenti, è necessario prima ripulire il pasticcio e portare l'ordine di tag, attributi e testo ordinario. Per la data documento HTML, HtmlCleaner riordina gli elementi individuali e produce XML ben formato. Per impostazione predefinita, segue regole simili che la maggior parte dei browser web utilizzare al fine di creare Document Object Model. Tuttavia, l'utente può fornire tag personalizzato e set di regole per il filtraggio di tag e il bilanciamento.

Con HtmlCleaner è possibile individuare ogni elemento usando XPath.

Per gli altri parser HTML vedono questa domanda SO .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top