Autor Beitrag
r4id3n
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 115

Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
BeitragVerfasst: 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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 115

Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 115

Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 115

Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 338

Win 7 Prof.
Delphi 2005 Prof., Delphi 2010 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Mi 30.03.05 23:20 
wow sowas suche ich schon seit längerem verzeifelt. Dachte schon das ich das selber machen muss :wink:
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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: 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



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
        begin
            TagElem.IsSpanningTag:=false;
            TagEndPos:=TagStartPos;
        end;
    end;
end;

Richtig ist:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 115

Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 94

WIN 2000
D6 Prof
BeitragVerfasst: Fr 08.07.05 11:28 
user profile iconr4id3n 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 115

Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 115

Win XP Home, Win XP Pro
D6 Prof, D7 Ent, K3 Ent
BeitragVerfasst: Mo 11.07.05 19:27 
UPDATE:

Neue Funktionen, Bugfixing! URL ist gleich!

Happy testing!
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: 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



BeitragVerfasst: So 23.10.05 22:11 
user profile iconretnyg 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: So 23.10.05 22:30 
Mädels, Mädels... Sagt mal geht es vielleicht auch freundlicher? :roll:

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? :gruebel:
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: So 23.10.05 22:59 
user profile iconRobert_G hat folgendes geschrieben:
Mädels, Mädels... Sagt mal geht es vielleicht auch freundlicher? :roll:

ich sage meistens das, was ich mir denke...
user profile iconRobert_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
user profile iconRobert_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.
user profile iconRobert_G hat folgendes geschrieben:
Was will man da mehr? :gruebel:

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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 94

WIN 2000
D6 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 16



BeitragVerfasst: Fr 02.12.05 14:24 
Erstmal vielen Dank für die super Klassen!!!

Ich hab trotzdem ein Problem! :(


ausblenden Quelltext
1:
<strong>text1<br>text2</strong>					


ausblenden 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