Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebbrowser Daten auslesen (https://www.delphipraxis.net/109703-twebbrowser-daten-auslesen.html)

aaron 14. Mär 2008 10:39

Re: TWebbrowser Daten auslesen
 
Ich habe dir wegen den Daten eine PN gesendet.
Gruß
Aaron

marabu 15. Mär 2008 17:26

Re: TWebbrowser Daten auslesen
 
Hallo Aaron,

ich habe mir die Webseite angesehen und mein Code-Beispiel etwas angepasst. Es sind character entities enthalten und manche Feldwerte enthalten markup code.

Delphi-Quellcode:
function CreateDocument(const markup: string): IHTMLDocument2;
var
  doc: OleVariant;
begin
  Result := CoHTMLDocument.Create as IHTMLDocument2;
  doc := Result;
  doc.Open;
  doc.Write(markup);
  doc.Close;
end;

function DecodeEntities(const s: string): string;
var
  doc: OleVariant;
begin
  doc := CoHTMLDocument.Create;
  doc.open;
  doc.Write(s);
  doc.Close;
  Result := doc.body.innerHtml;
end;

procedure ShowIt(doc: IHTMLDocument2; s: TStrings);
const
  MARKER = 'showinfoalphabet(';
var
  i, iLeft, iRight: Integer;
  ec: IHTMLElementCollection;
  e: IHTMLElement;
  value: string;
begin
  ec := doc.all.tags('a') as IHTMLElementCollection;
  for i := 0 to Pred(ec.length) do
  begin
    e := ec.item(i, null) as IHTMLElement;
    value := VarToStr(e.getAttribute('onclick', 0));
    if value = ''
      then Continue
      else value := DecodeEntities(value);
    iLeft := Pos(marker, Lowercase(value)) + Length(marker);
    iRight := LastDelimiter(')', value);
    if iLeft > Length(marker)
      then value := Copy(value, iLeft, iRight- iLeft)
      else Continue;
    s.Add(value);
  end;
end;


// Test

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  doc: IHTMLDocument2;
  csv, markup: TStrings;
  fn: string;
begin
  fn := 'C:\Daten\DP\A.htm';
  markup := TStringList.Create;
  csv := TStringList.Create;
  try
    markup.LoadFromFile(fn);
    doc := CreateDocument(markup.Text);
    ShowIt(doc, csv);
    csv.SaveToFile(ChangeFileExt(fn, '.csv'));
  finally
    markup.Free;
    csv.Free;
  end;
end;
Freundliche Grüße

aaron 16. Mär 2008 00:19

Re: TWebbrowser Daten auslesen
 
Vielen vielen Dank.

aaron 18. Mär 2008 15:19

Re: TWebbrowser Daten auslesen
 
Hallo Achim,

darf ich dich in dieser Angelegenheit nochmal um einen Gefallen bitten?
Auf den übrigen Seiten wird nicht mehr mit HTML Entities gearbeitet, ich bekomme zwar mit deinem allerersten Code immer eine Adresse angezeigt aber nie alle.
Wenn ich showinfoalphabet in showInfo bei deinem allerletzten Code ändere bringt das auch nichts.
Irgendwie hatte ich vorgestern Ergebnisse bekommen, nun versuche ich schon seit Stunden etwas brauchbares zustande zu bringen, leider ohne Erfolg.
Man sollte doch immer alles speichern.
Habe dir nochmal eine PN geschickt.

[EDIT] Stimmt du hattest recht, ich hatte einen Schreibfehler

Gruß
Aaron


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 Uhr.
Seite 2 von 2     12   

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