luni, 10 noiembrie 2008

Parsare HTML in Java

In acest post voi prezenta o metoda de parsare a documentelor HTML prost formate (taguri neinchise sau incrucisate si alte moduri de nerespectare ale cerintelor XHTML).

Totul a pornit de la o tema la materia Interfete Evoluate, care cerea extragerea dintr-o retea sociala a tuturor prietenilor unui user, pornind de la id-ul acestuia. A parut simplu la inceput. nu aveam decat sa parsez pagina de profil si sa sar din link in link pana as fi epuizat reteaua de prieteni pana la o anumita adancime. Dificultatea temei a fost insa parsarea paginilordin interiorul retelei sociale. Parserul SAX din Java crapa din cauza erorilor din documentul XML...pentru ca ...o pagina HTML e foarte rar valida din punct de vedere al formatului XML.

Ceea ce am folosit pentru a parsa in Java paginile HTML a fost un parser gratuit, Jericho, care se poate downloada la adresa :
http://jerichohtml.sourceforge.net/.

Motivele pentru care recomand parserul HTML Jericho sunt :

  • e open source si gratuit
  • e simplu de inteles, fiind scris intr-un stil explicit si bine documentat
  • e simplu de folosit pentru ca vine cu o suita de exemple accesibile pentru diverse modele de utilizare
  • nu e nevoie sa cauti pe net exemple de cod pentru a folosi biblioteca, sunt suficiente sursele puse la dispozitie in pachet
  • gaseste erorile datorate proastei formatari a textului dar trece peste si incearca o parsare cat mai completa pentru restul documentului
  • intreaga arhiva jar are in jur de 300k, ceea ce e din punctul meu de vedere o dimensiune acceptabila

Pentru a face arhiva jar (libraria externa) disponibila unui proiect in Eclipse:

  • Project -> Properties -> Java Build Path -> Libraries -> Add External Jars -> Jericho.jar
Pentru mine acest parser a fost suficient, dar daca nu e chiar ceea ce cautati, alte sugestii ar fi:

0 comentarii:

Yellow Puppies Blogger Template | Template Design | Elque 2008