Autor |
Beitrag |
r4id3n
Beiträge: 115
Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
|
Verfasst: Do 30.12.04 01:51
Hallo zusammen, nachdem ich eine reihe positiver resonanzen bekommen habe, hier also der Source meines HTML-Parsers.
Funktion
- erstellt aus einem gegebenen HTMLString (Dokument, etc.) eine Liste von Objekten, die jeweils wiederrum einzelne UnterObjekte enthalten. So wird aus
<HTML><TITLE>Test</TITLE></HTML>z.b.
Quelltext 1: 2: 3:
| |---TAG:HTML |---TAG:Title |---VALUE:Test |
- erlaubt es an beliebigen stellen der so erzeugten Objektliste weitere "Elemente" einzufügen
- aus der Elementenliste wieder eine HTML-Datei zu machen.
Da die UNIT etwas zu groß ist, habe ich sie auf meinen Webserver kopiert! (dependencies und doku sind inbegriffen!)
Ein wichtiger hinweiß noch! Das ganze steht unter GPL! D.h. ihr könnt das für eure Projekte verweden, vorrausgesetzt, dass diese ebenfalls open source sind, und ihr das copyright beibehaltet. Sollte interesse an einer kommerziellen verion bestehen, so verkaufe ich den source auch in einer nicht GPL version gegen eine kleine Spende
Und hier der LINK: www.aixhost.de/HTMLParser.rar
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 30.12.04 04:42
hört sich super an, liest der auch die class eigenschaft eines Tags aus ? oft gebraucht für stylesheets
|
|
r4id3n
Beiträge: 115
Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
|
Verfasst: Do 30.12.04 11:57
Alles, was in der form <TAG NAME="VALUE"> ist, kann gelesen werden!
Falls ihr was fidet, was ich noch nicht beachtet habe, würde ich mich über eine kurze pn freuen!
|
|
r4id3n
Beiträge: 115
Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
|
Verfasst: Fr 07.01.05 17:37
Da hat sich noch ein kleiner Bug eingeschlichen ... Beim Createn des THTMLDocuments kann man derzeit leider noch nicht den HTMLString angeben ... Das werde ich übers WE fixen, dann gibts auch noch eine etwas erweiterte funktion! Würde mich freuen, wenn diejenigen, die den Parser benutzen, mir ne kurze PN schicken könnten !
|
|
r4id3n
Beiträge: 115
Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
|
Verfasst: Do 03.02.05 00:34
Hallo, nachdem sich nun bereits 75 User diese Unit angeschaut haben, wäre es nett... Wenn mir zumindest 5 - 10% ihre Meinung dazu schreiben würden ....
Wo verwendet ihr meinen Parser ? Läuft er schnell genug? Fehler gefunden?
|
|
mirage228
Beiträge: 338
Win 7 Prof.
Delphi 2005 Prof., Delphi 2010 Prof.
|
Verfasst: Do 03.02.05 07:52
r4id3n hat folgendes geschrieben: | Hallo, nachdem sich nun bereits 75 User diese Unit angeschaut haben, wäre es nett... Wenn mir zumindest 5 - 10% ihre Meinung dazu schreiben würden ....
Wo verwendet ihr meinen Parser ? Läuft er schnell genug? Fehler gefunden? |
Hi,
evenutell solltest Du eine kleine Demo-Application basteln, die die Zeiten beim Parsen gleich mitmisst und anzeigt.
Dann könnte man auch schneller den Umgang mit der Unit lernen
mfG
mirage228
_________________ May the source be with you, stranger.
|
|
DSeven
Beiträge: 39
|
Verfasst: Mi 30.03.05 23:20
wow sowas suche ich schon seit längerem verzeifelt. Dachte schon das ich das selber machen muss
Die Unit passt perfekt in meine PHP IDE werde die Unit bald einbauen und hier mal einen kleinen Screeni veröffentlichen.
Danke für die Unit.
cya
|
|
Kernel32.dll
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 31.03.05 00:47
Ich denke, ich werde sie vllt. in dem einem oder anderen Projekt verwenden, wo ich eine HTML-Logdatei brauchen könnte....
Hübsches Ding (die Unit)
|
|
DSeven
Beiträge: 39
|
Verfasst: Do 31.03.05 04:32
Hmm finde den Kommentar von dir in der Datei sehr lustig.
Also du veröffentlichst die unit unter GPL (LGPL währe besser) und schreibst dann wenn jemand die unit kommerziel nutzen möchte soll sich melden.
Die GPL schließt eine kommerziele nutzung mit ein also ist der kommentar unnötig.
Du meinst wohl eher die kommerzielle Nutzung und das der Author seinen source nicht unter GPL stellen muss.
Und noch ein paar verbesserungsvorschläge die unbedingt gemacht werden müssen:
1. Ein und ausschalten von Kommentaren man soll wählen können ob sie geparst werden oder nicht.
2. Du hast einen Fehler in der Create Methode wo man einen String übergibt.
3. Es sollte ein property bei den Tags geben um die Position raus zu finden.
so das wars
cya
|
|
Micho
Hält's aus hier
Beiträge: 7
|
Verfasst: Sa 14.05.05 22:01
Hallöle,
Erstmal danke, für den HTML-Parser.
Hab' hier eine nicht ganz HTML-konforme Datei versucht zu parsen, womit er aber Probleme hat.
Das Beispiel:
<font ...><a href=...>Text</a>
Der Parser erkennt, dass der font-Tag nicht geschlossen wird und sucht dann nach dem nächsten Tag. Hier hat sich scheinbar ein kleiner Fehler eingeschlichen, da der nächste Tag, den er findet, erst das </a> ist.
Das Problem liegt in der THTMLDocument.ParseSubPart-Prozedur.
Die letzten Zeilen lauten:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| begin TagElem.IsSpanningTag:=false; TagEndPos:=TagStartPos; end; end; end; |
Richtig ist:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| begin TagElem.IsSpanningTag:=false; TagEndPos:=TagStartPos-1; end; end; end; |
Da fehlt also noch ein -1. Vielleicht konnte ich damit helfen
Als Anmerkung: Vielleicht sollte der Parser auch von vornherein öffnende von schließenden Tags unterscheiden, denn es gibt ne ganze Menge dreckigen HTML-Code da draußen ...
|
|
r4id3n
Beiträge: 115
Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
|
Verfasst: Do 26.05.05 22:08
Danke für den Tipp ... Ich werde bei gelegenheit die aktuelle Version posten .... Habe in der zwischenzeit noch so einiges mehr korrigiert.
|
|
rstaeker
Beiträge: 94
WIN 2000
D6 Prof
|
Verfasst: Fr 08.07.05 11:28
r4id3n hat folgendes geschrieben: | ... Ich werde bei gelegenheit die aktuelle Version posten .... Habe in der zwischenzeit noch so einiges mehr korrigiert. |
Ich habe mir die Komponente auch schon mal mit obigen Link herunter geladen.
Gibt es die neuere Version auch irgendwo. Mit den Korrekturen.
MfG Rene
|
|
r4id3n
Beiträge: 115
Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
|
Verfasst: Fr 08.07.05 12:10
Ich war leider in letzter Zeit etwas Busy wegen meiner HöMaII Klausur ... Jetzt, wo die Zeit wieder etwas besser bemessen ist, werde ich auch die Arbeit an meinem CMS wieder aufnehmen ... Dazu wird dann auch in nächster Zeit eine neue Version des Parsers veröffentlicht!
|
|
r4id3n
Beiträge: 115
Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
|
Verfasst: Mo 11.07.05 19:27
UPDATE:
Neue Funktionen, Bugfixing! URL ist gleich!
Happy testing!
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Sa 27.08.05 06:37
ich wollte das teil vorhin mal verwenden.
nach ner halben stunde rumprobieren ist mir die lust aber gründlich vergangen.
wenn du willst dass jemand ausser dir das ding einsetzt, muss ein demo prog her, dass einem zeigt wie man es richtig anwendet.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
er_nevro
Hält's aus hier
Beiträge: 13
|
Verfasst: So 23.10.05 22:11
retnyg hat folgendes geschrieben: | ich wollte das teil vorhin mal verwenden.
nach ner halben stunde rumprobieren ist mir die lust aber gründlich vergangen.
wenn du willst dass jemand ausser dir das ding einsetzt, muss ein demo prog her, dass einem zeigt wie man es richtig anwendet. |
dit0!
Mehr gibbet nit zu sagen, bis ich genau die einekleine Funktion gefunden habe die ich brauche, ist mit die Lust auf mein aktuelles Projekt vergangen *dillemma*
|
|
Robert_G
Beiträge: 416
Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
|
Verfasst: So 23.10.05 22:30
Mädels, Mädels... Sagt mal geht es vielleicht auch freundlicher?
Der Autor hat hier etwas gemacht, dass ihn von 99% aller Freeware/OSS Autoren in diesem Forum unterscheidet: Er hat eine erstklassige und umfangreiche Dokumentation beigelegt
Da er dazu inline Docu comments verwendet hat ist sogar der source code schon beim Überfliegen prima nachvollziehbar.
Was will man da mehr?
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: So 23.10.05 22:59
Robert_G hat folgendes geschrieben: | Mädels, Mädels... Sagt mal geht es vielleicht auch freundlicher? |
ich sage meistens das, was ich mir denke...
Robert_G hat folgendes geschrieben: | Der Autor hat hier etwas gemacht, dass ihn von 99% aller Freeware/OSS Autoren in diesem Forum unterscheidet: Er hat eine erstklassige und umfangreiche Dokumentation beigelegt |
erstklassig ? ein skript das mir alle zeilen mit methodendeklarationen in ein html schreibt ist in 5min gecodet
Robert_G hat folgendes geschrieben: | Da er dazu inline Docu comments verwendet hat ist sogar der source code schon beim Überfliegen prima nachvollziehbar. |
interessant, ich habe die doku gelesen, habe aber trotzdem nicht rausgefunden wie ich alle hyperlinks aus einer seite extrahiere.
insgesamt habe ich mit der unit, ohne ein resultat zu kriegen, mehr zeit verbraten als mir einen eigenen hyperlink-extractor zu programmieren.
Robert_G hat folgendes geschrieben: | Was will man da mehr? |
ein an die praxis angelehntes demo-programm z.b., wo man sieht wie die vorgesehene anwendung auszusehen hat.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
rstaeker
Beiträge: 94
WIN 2000
D6 Prof
|
Verfasst: Mo 24.10.05 09:30
Morgen,
@retnyg
Die Unit ist sicher nicht dazu gedacht, nur die Hyperlinks aus einem Dokument zu extrahieren. Sicher solche einfacher Funktionen kann man vielleicht selbst schneller programmieren. Aber dann reg Dich nicht darüber auf.
Die Unit ist bei komplexen Html Seiten aber sehr sinnvoll und die Doku ist auch in Ordnung.
Ich selbst benutze die Unit um komplette HTML Seiten mit Tabellen zu zerlegen, die Daten in den Tabellen zu extrahieren und neue HTML Seiten mit komplett anderer Struktur zusammen zu bauen.
Meiner Meinung nach ist diese Unit eine klasse Arbeit und für ein OpenSource Projekt vollkommen ausreichend.
MfG
Rene
|
|
neeoo
Beiträge: 16
|
Verfasst: Fr 02.12.05 14:24
Erstmal vielen Dank für die super Klassen!!!
Ich hab trotzdem ein Problem!
Quelltext 1:
| <strong>text1<br>text2</strong> |
Delphi-Quelltext 1: 2: 3: 4: 5:
| sText := ''; for iLoop := 0 to Element.ChildCount - 1 do begin _Element := Element.ChildItems[iLoop]; sText := sText + _Element.Content + ' '; end; |
Leider wird nur text2 ausgelesen und text1 kann ich nirgends finden!
Ist es ein Bug oder mache ich etwas falsch?
Neeoo
|
|