AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

HTML auslesen

Ein Thema von Delbor · begonnen am 28. Jan 2022 · letzter Beitrag vom 29. Jan 2022
Antwort Antwort
Seite 1 von 2  1 2      
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

HTML auslesen

  Alt 28. Jan 2022, 15:38
Delphi-Version: 10.4 Sydney
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 POS und PosEx nachgebaut und etwas abgeändert.

Delphi-Quellcode:
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;
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.

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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.081 Beiträge
 
Delphi 2009 Professional
 
#2

AW: HTML auslesen

  Alt 28. Jan 2022, 15:57
Vielleicht solltest du schreiben, was du eigentlich möchtest? Oder wolltest du nur wissen, dass es das HTML-Tag <base> gibt?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: HTML auslesen

  Alt 28. Jan 2022, 17:00
Ich habe die konkrete Frage ehrlich gesagt auch nicht verstanden.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: HTML auslesen

  Alt 28. Jan 2022, 17:11
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: HTML auslesen

  Alt 28. Jan 2022, 17:28
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)
$2B or not $2B

Geändert von himitsu (28. Jan 2022 um 17:39 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: HTML auslesen

  Alt 28. Jan 2022, 17:46
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
  • mit Delphi
  • mit Rezepten
  • mit Microsoft
  • mit PiPaPo und so weiter
Ziel: die Wahnsinnsliste, wie sie hute existiert, eliminieren und links wiederfinden...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (28. Jan 2022 um 19:24 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#7

AW: HTML auslesen

  Alt 28. Jan 2022, 19:21
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.
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#8

AW: HTML auslesen

  Alt 28. Jan 2022, 19:37
Hallo,

DB - Info

https://www.wenjiangs.com/wiki/en-US...laces/Database

Gruß
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: HTML auslesen

  Alt 28. Jan 2022, 23:55
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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#10

AW: HTML auslesen

  Alt 29. Jan 2022, 10:48
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz