![]() |
Delphi-Version: 10.4 Sydney
HTML auslesen
Hi zusammen
Meinem derzeitigen Testprogramm hab ich einen Edgebrowser verpasst und bin jetzt auch auf die (blöde?) Idee gekommen, ich könnte damit statt mit dem Firefox surfen, also hab ich mir mal die Lesezeichen des Fuchses nach HTML exportiert - JSON wäre auch möglich. Zuallererst lade ich von der Datei mit den Bookmarksicherungen den HTML-Code in einen Stringstream. Dann hab ich mal ein Beispiel zu ![]()
Delphi-Quellcode:
Der durchsuchte Text enthält in doppelten Hochkommas die URL einer Webseite und in eckigen Klammern den sichtbaren Text - die HTML-Seite, so im Feuerfuchs geladen, ist eigentlich voll funktionsfähig. Allerdings mit der Einschränkung, dass sich (ohne Javascript?) die Webseite in der selben Seite öffnet.
function THomeOfficerFeMain.LoadLinkStream: String;
var StartPos, EndPos, Pos1, Pos2, Offset, L_Lenght :Integer; S, HText: String; begin inherited; Self.FLinkStream := TStringStream.Create; FLinkStream.Position := 0; FLinkStream.LoadFromFile(HomeOfficerFeMain.ProjectPath +'\HTML\Lesezeichen-HTML\Lesezeichen-bookmarks 2.html'); s := FLinkStream.DataString; L_Lenght := Length(S); ShowMessage('HTMLTextlänge := ' + IntToStr(L_Lenght)); StartPos := Pos('"', s); if StartPos <> 0 then // erstes Vorkommen gefunden begin // Position des zweiten Semikolons ermitteln: Suchstart gleich nach dem ersten Vorkommen ShowMessage('Positionswert von StartPos := ' + IntToStr(StartPos)); EndPos := PosEx('"', s, StartPos + 1); if EndPos <> 0 then ShowMessage('gefunden an Position:(EndPos) ' + IntToStr(EndPos)) // Hier habe ich die letzten CodeZeilen gelöscht--sie sind irrelevant hier end; end; Um weiter zu suchen, müssten die Positions- und Suchwerte angepasst werden, bis das Ende des Strings erreicht ist. Andrerseits sind doch Streams recht gute Werkzeuge und sollten eigentlich mit Bordmitteln die komplette Suche durchführen können? Gruss Delbor |
AW: HTML auslesen
Vielleicht solltest du schreiben, was du eigentlich möchtest? Oder wolltest du nur wissen, dass es das HTML-Tag
Delphi-Quellcode:
gibt?
<base>
|
AW: HTML auslesen
Ich habe die konkrete Frage ehrlich gesagt auch nicht verstanden.
|
AW: HTML auslesen
HTML ist doch auch nur eine Art XML.
Da würde ich die bestehenden Werkzeuge in Delphi dafür verwenden und das in ein XMLDocument laden und mich durch die Nodes wuseln bis zum gewünschten Element. |
AW: HTML auslesen
Nein, es sieht gleich ähnlich aus, aber es gehört garnicht zusammen.
XHTML wäre HTML, welches vollständig kompatibel zu XML ist. In HTML sind offene Elemente erlaubt und ein "guter" HTML-Parser kann auch Konflikte/Defekte/Fehler/usw. in der Syntax auflösen/ignorieren. HTML stammt von SGML ab (ist ein verweichlichter Nachfahre ... da WebEntwickler faule fehleranfällige Idioten sind, wurden Browser verunstaltet und erlauben viel Scheiße) und XML ebenfalls. Sie sind quasi inkompatible Geschwister unterschiedlicher Väter (oder Mütter). Mit XHTML wurden sie dann wieder vereint, bzw. HTML an die zwanghaft strikte Syntax von XML angepasst. HTML kann XML verstehen, aber XML kann HTML nur verstehen, wenn es strict valides (well-formed) XHTML ist. SVG dageben baut auf XML auf und somit kann XML auch SVG lesen. (und SVG kann auch direkt in HTML rein, da SVG>XML>HTML sich in dieser Richtung verstehen) |
AW: HTML auslesen
Hi zusammen
Was ich wirklich will? Na ja, ich wusste erstmal nicht, wie ich das Formulieren sollte Tatsache ist: Im Laufe der Zeit haben sich sehr blödsinnig viele Lesezeichen angesamelt, die ich nie lösche, weil man sie gerade dann mal bräuchte... Im Firefox kann man zwar Lesezeichen mit verschiedenen Kommentaren versehen (Schlagwörter, Schlüsselwörter), nicht aber Ordner. Beim Neuordnen derselben ist es mir wiederholt passiert, dass ich so ein Ding 'verloren' habe - es ist mir gewissermasse von der Gabel ...ähh Maus gerutscht und in irgendeinem Ordner verschwunden. Wenn ich dann nicht wirklich mitgekriegt habe, in welchem, konnten Stunden oder auch Tage vergehen, bis ich den wieder fand. Was also liegt da näher, als dem mit meinen Programmierkenntnissen abhilfe zu verschaffen? So habe ich also meine Lesezeichen im Firefox in eine HTML-Datei exportiert und müsste sie in meinem Programm importieren. Allerdings soll der String (und genau das ist es eigentlich) noch weiter bearbeitet werden, indem die einzelne Einträge auf mehrere Treeviews verteilt werden. Ausserdem soll jeder Knoten in einem Record (in Nodes.Data) speichern, ob er einen Knoten oder eine Datei/URL repräsentiert etc. Ich hoffe, ich habe mein Ziel einigermassen verständlich machen können. Ach ja: als 'Lesezeichenbox' will ich ein hundsnormales Treeview verwenden, bzw. eben auch mehrere. Da gäbe es denn eines für Links im Zusammenhang
Gruss Delbor |
AW: HTML auslesen
Warum via HTML und parsen?
FireFox (zumindest meine schon etwas ältere Version) speichert diese Infos in der places.sqlite, das ist eine SQLite-Datenbank. Die Lesezeichen stehen dort in der Tabelle moz_bookmarks, da kann man mit Datenbankmitteln (via Delphi) ran. Zu finden ist sie im Profilordnerverzeichnis "irgendwo in den Benutzereinstellungen von Windows". %APPDATA%\Mozilla\FireFox\Profiles\irgendwas kryptisches\places.sqlite Habe aber keine Ahnung, wie die Tabellen in der Datenbank miteinander in Verbindung stehen. Aber um sich die Daten erstmal anzusehen, sollte das reichen. |
AW: HTML auslesen
|
AW: HTML auslesen
Hi zusammen
@Delphi.Narium: Vielen Dank für deinen Tip bezüglich der DB places.sqlite. Ich habe davon gleich mehrere gefunden: C:\Users\Roger\AppData\Roaming\Mozilla\Firefox\Pro files\mk6nshpf.default-1476204960173-1550907348311\places.sqlite. So, wie's ausschaut, gibts davon eine ganze Menge. @mmw: Hochinteressant! Euch beiden vielenDank! Gruss Delbor |
AW: HTML auslesen
Es müsste je User am Rechner eine geben.
Im Zweifel starte FireFox, gebe irgendeine (bisher nicht genutzte?) Url ein und rufe die Seite auf. Beende FireFox, suche nach der places.sqlite mit dem neuesten Datum. Das müsste dann die sein, die für Dich persönlich von FireFox genutzt wird. Die eingegebene Url müsste sich dann in der Tabelle Places, bei Sortierung nach id oder last_visit_date, am Ende finden lassen. Ja, der Weg ist nicht professionell, sollte aber ausreichen ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz