THTMLDocument und GetElementsByName

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
onkeltorty
Beiträge: 6
Registriert: So 19. Nov 2023, 06:49

THTMLDocument und GetElementsByName

Beitrag von onkeltorty »

Hallo,
ich habe folgendes Programm:

Code: Alles auswählen

uses sax_html, dom_html, dom, fphttpclient, opensslsockets, (...);

(...)

procedure TForm1.ParseHTMLExecute(Sender: TObject);
var
  HTMLDoc: THTMLDocument;
  DivList: TDOMNodeList;
  sStream: TStringStream;
  sUrl : string = '';
  strHtml: string = ''; 
  begin
  sUrl:='https://www.google.de';
  //HTML herunterladen
  strHtml := TFPCustomHTTPClient.SimpleGet(sUrl);

  ShowMessage('Length(strHtml)='+IntToStr(Length(strHtml)));
  
  //HTMLDoc erstellen
  HTMLDoc:= THTMLDocument.Create();
  //Den StringStream erstellen
  sStream := TStringStream.create(strHtml);

  ShowMessage('sStream.Size='+IntToStr(sStream.Size));
  
  //Den HTML-String in das HTMLDoc einlesen
  ReadHTMLFile(HTMLDoc, sStream);

  //Alle Knoten mit dem DIV-Tag einholen
  DivList := HTMLDoc.GetElementsByName('div');  

  ShowMessage('DivList.Count = ' + IntToStr(DivList.Count)); 
Der Code stammt aus diesem Beitrag: https://forum.lazarus.freepascal.org/in ... ic=35607.0. Die Variable strHtml und der TStringStream sStream werden befüllt und haben die selbe Größe. Nur warum ist DivList.Count immer 0?
Ich habe zwar schon Google mehrmals befragt, aber ohne Erfolg. Kennt jemand die Lösung oder einen besseren Weg, um HTML zu parsen?

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: THTMLDocument und GetElementsByName

Beitrag von theo »

onkeltorty hat geschrieben:
Di 2. Jan 2024, 04:50
Der Code stammt aus diesem Beitrag: https://forum.lazarus.freepascal.org/in ... ic=35607.0.
Nicht ganz richtig abgetippt. Manchmal ist CopyPaste doch besser.
https://stackoverflow.com/questions/166 ... ame-in-jav

Benutzeravatar
onkeltorty
Beiträge: 6
Registriert: So 19. Nov 2023, 06:49

Re: THTMLDocument und GetElementsByName

Beitrag von onkeltorty »

Das ist das zweite Mal, dass Du mich vor meiner eigenen Abstrusität bewahrt hast. Memo an mich: "Du solltst mitten in der Nacht im Halbschlaf nicht programmieren".

Danke, Theo. Du hast mir den Tag gerettet :P :mrgreen:

Antworten