Thema: Delphi HTML auslesen

Einzelnen Beitrag anzeigen

Delbor

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

HTML auslesen

  Alt 28. Jan 2022, 14: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