![]() |
Bestimmte Werte aus HTML Quelltext extrahieren
hallo,
erstmal wieder ein grosses Lob an die DP(immer wieder schön hier zu sein). mein Problem ist folgendes, also ich surfe mit dem Twebbrowser eine Seite an, dieser soll von dort dann den Quelltext auslesen und kp in nem strin oder ähnlichem speichern. Ein auszug des Quelltextes sieht so aus:
Delphi-Quellcode:
nun würde ich gern Delphi dazu überreden, das er mir praktisch die zahlen hinten in einem editfeld abspeichert, bzw in 4 editfeldern. [zuordnen lässt sich das ganze ja durch die ids(also res1-4)];
<td width="150" align="center" class="line_2" id="res1">11.043</td>
<td width="150" align="center" class="line_2" id="res2">954</td> <td width="150" align="center" class="line_2" id="res3">55</td> <td width="150" align="center" class="line_2" id="res4">2365</td> ich habe leider mit der Vearbeitung von strings bzw dem extrahieren bestimmter stellen eine Erfahrung und wüsste nicht genau wie ich rangehen sollte.... Der Quelltext ist mit einem Frame geschützt. Ich hoffe auf Hilfe. MFG goenner90 |
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Schau mal nach Pos und Copy damit kommst du an die Zahlen die zwischen
>...< stehen. |
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Hi,
![]() ![]() (du willst zwar keine Links filtern, aber an dem Beispiel sollte man sehen können, wie das ganze funktioniert) |
Re: Bestimmte Werte aus HTML Quelltext extrahieren
jo ich werd mir das erstmal anschauen, mal sehen ob Toms mein Mentor dazu noch was sagt.
|
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Hi,
vielleicht hilft dir das weiter: ![]() Grüße vom marabu Edit: Beim Link topic105466html fehlte der Punkt ... |
Re: Bestimmte Werte aus HTML Quelltext extrahieren
@ marabu da komm ich immer auf folgenden topic: PRogrammier-Gruppe (also wenn ich den Link anklicke...
hoffen auf Toms.... |
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Zitat:
Zitat:
|
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Zitat:
|
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Zitat:
mfg goenner90 PS: ausserdem will ich ihm keine Pn schreiben weil wenn er den Thread liest und meint antworten zu müssen wird er es schon machen. |
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Also Achims Antworten kannst du ohne Zweifel vertrauen. Er ist ein mindest genauso großer Fachmann in Sachen mshtml wie toms
|
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Mal ne etwas andere Idee:
Muss es denn unbedingt aus dem Quelltext extrahiert werden? Wenn du das Ganze schon im TWebbrowser geöffnet hast, dann kannst du wunderbar über die HTML-DOM-Struktur auf die einzelnen Objekte des Dokuments zugreifen. So kannst du z.B. ganz einfach den Titel der Webseite verändern (oder auslesen):
Delphi-Quellcode:
Und für alle anderen Objekte und deren Attributwerte ist das ebenfalls möglich (hab mich damit mal länger beschäftigt, finde das aber im Moment nicht...)
uses MSHTML;
var s: String; ... s := IHtmlDocument2(Webbrowser1.Document).Title; IHtmlDocument2(Webbrowser1.Document).Title := 'Neuer Titel'; |
Re: Bestimmte Werte aus HTML Quelltext extrahieren
Hallo, folgender Code basiert auf marabus Code.
Musst natürlich den Code noch etwas umschreiben, da du ja die Daten nicht in ein Stringgrid übertragen möchtest.
Delphi-Quellcode:
uses MSHTML;
// IHTMLDocument2 eines Frames ermitteln function GetFrameDoc(doc: IHTMLDocument2; v: OleVariant): IHTMLDocument2; var win: IHTMLWindow2; u: IUnknown; begin u := doc.frames.item(v); if Assigned(u) and Succeeded(u.QueryInterface(IHTMLWindow2, win)) then Result := win.Document else Result := nil; end; // IHTMLTable nr. iTableNr eines IHTMLDocument2 ermitteln function GetTable(doc: IHTMLDocument2; iTableNr: OleVariant; var t: IHTMLTable): Boolean; var ec: IHTMLElementCollection; e2: IHTMLElement2; begin Result := True; e2 := doc.body as IHTMLElement2; ec := e2.getElementsByTagName('table'); if ec.length > 0 then t := ec.item(iTableNr, null) as IHTMLTable else REsult := False; end; // Zellen einer Zeile in ein Stringgrid übertragen procedure GetCells(tr: IHTMLTableRow; sg: TStringGrid; index: Integer); var i: Integer; ec: IHTMLElementCollection; e: IHTMLElement; s: TStrings; begin s := sg.Rows[index]; s.Clear; ec := tr.cells; if sg.ColCount < ec.Length then sg.ColCount := ec.length; for i := 0 to Pred(ec.length) do begin e := ec.item(i, null) as IHTMLElement; s.Add(e.innerText); end; end; // IHTMLTable in Stringgrid übertragen procedure GetRows(t: IHTMLTable; sg: TStringGrid); var i: Integer; ec: IHTMLElementCollection; begin ec := t.rows; sg.RowCount := ec.length; for i := 0 to Pred(ec.length) do GetCells(ec.item(i, null) as IHTMLTableRow, sg, i); end; procedure TForm1.Button2Click(Sender: TObject); var iDoc2 : IHTMLDocument2; itable: IHTMLTable; row: IHTMLTableRow; i: Integer; begin if assigned(Webbrowser1.Document) then begin iDoc2 := Webbrowser1.Document as IHTMLDocument2; if Assigned(iDoc2) then begin iDoc2 := GetFrameDoc(iDoc2, 1); // IHTMLDocument2 von frame Nr. 1 ermitteln if Assigned(iDoc2) then begin if Assigned(iDoc2) then if GetTable(iDoc2, 0, itable) then // erste Tabelle begin GetRows(itable, Stringgrid1); end; end; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 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