Entwickler-Ecke

Internet / Netzwerk - suche HTML Parser


testerjoe - Do 12.03.09 22:27
Titel: suche HTML Parser
wie schon im Titel beschrieben suche ich einen HTML Parser der nichts kostet und mit dem ich aber trotsdem eine html nach bestimmten tags und class-values auseinandernehmen kann.

Das Problem ist, dass ich eine große html mit variablen Inhalt habe.
folgendes Beispiel:
.
.
.
<div>...</div>
<div class="werte">was keiner braucht</div>
<div>
<div class="interessant">
<div>...</div>
<div class="werte">was ich haben will</div>
<div class="werte">was ich auch haben will</div>
<div>...</div>
</div>
</div>
.
.
.

PS: es darf aber auch kein Fehler auftreten, denn mal keine passenden tags vorhanden sind!


DennisHB - Fr 13.03.09 04:38

Meine Erfahrung mit HTML-Parsern für Delphi ist, grob gesagt, mehr als enttäuschend...

a) extrem teuer (ergo persönlich nicht mal getestet)
b) unbrauchbar langsam

wenn es darum geht, bestimmte Stellen auf einer HTML Seite zu finden würde ich RegEx empfehlen... in der Regel kann man damit (auf recht konstanten Seiten) eigentlich alles abfangen. (Expresso - Tool um RegEx zusammen zubasteln - kann hier ggf helfen das ganze leichter zu verstehen) - imho ist der Aufwand den man in das lernen von RegEx steckt weit besser angebracht als in einen HTML-Parser der (mMn) eher dürftige Ergebnisse bringt und eine weitere Auswahl (idR. wieder durch RegEx) nicht ausschließt.

KEIN Fehler - darf man aber NIE erwarten... es sei denn man weiß wie der HTML-Source erzeugt wurde... besonders bei dynamisch erzeugten Seiten - und ich denk mal darum geht es hier - kann man sich leider auf nix verlassen, wenn man nicht selbst der Erzeuger ist (und dann würden sich weit bessere Wege finden als HTML-Parsen)


jaenicke - Fr 13.03.09 09:53

Es gibt sehr viele Parser. Selbst benutzt habe ich schon den in einem größeren Projekt:
http://delphi.icm.edu.pl/ftp/d30free/htmlprsr.zip
(Wegen der äh... äußerst ungünstigen Konstruktion der Seite, kann ich nur einen direkten Dateilink posten. Um den Eintrag zu finden kannst du hier nach htmlparser suchen: http://dsp.href.com/)

Der Beschreibung nach ist dieser recht gut:
http://sourceforge.net/projects/htmlp


testerjoe - Fr 13.03.09 11:11

vielen Dank für die schnellen Antworten.

Ich habe auch schon einige Parser ausprobiert, aber noch nicht wirklich was brauchbares gefunden.
(die meisten sind auf wenige fest vorgegebene tags ausgelegt.)
Den 'htmlp' habe ich auch schon da, doch giebs da scheinbar keine Dokumentation, und das beigefügte Demo ist sehr bescheiden. (nichteinmal ein Hinnweis, wie ich nach einem bestimten tag suchen kann..)
Und selbst die unterschiedlichen Klassen nach ihrer Funktion und Gebrach zu untersuchen traue ich mir noch nicht zu!
Den 'htmlprsr' habe ich mir mal angesehen, und da er sehr einfach aufgebaut ist, könnte mann den als Basis benutzen.
Was allerdings fehlt ist eine Property die mir den kompletten Inhalt eines tags ausgiebt. (incl. subtags)

Das Problem an meiner html ist, dass ich da keinen Einfluss drauf habe, und der Aufbau sehr unterschiedlich sein kann.
Da im gesammten Dokument, und auch innerhalb des interessanten Bereichs es sehr viele tags vom gleichen typ giebt, wird ein Filter mit RegEx selbst für Experten zur Herrausforderung..

Traut sich jemand zu, eine php- klasse nach delphi zu konvertieren??
Da giebs sehr viele und schöne Beispiele..