Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Webbrowser: <tr> </tr> suchen und Werte auslesen (https://www.delphipraxis.net/114206-webbrowser-tr-tr-suchen-und-werte-auslesen.html)

atreju2oo0 21. Mai 2008 12:40


Webbrowser: <tr> </tr> suchen und Werte auslesen
 
Hallo Zusammen,

Ich steh mal wieder aufm Schlauch...
Ich möchte aus einer HomePage eine Tabelle auslesen.
Dabei möchte ich alle Werte aus einer Zeile in ein Array übernehmen.

Mein Gedanke ist also das Element <tr> zu suchen und dann bis zu </tr> alle <td>'s einzutragen.

Aus der Webbrowser Demo von toms habe ich diesen Code um Links zu finden.
(is insgesamt länger, aber ich denke das hier die interessante Stelle steckt)
Delphi-Quellcode:
      ElementCo := htmlDoc.link;
      j := ElementCo.Length - 1;
      for i := 0 to j do
      begin
        u := ElementCo.item(i);
        s := u.href;
        showmessage('s');
      end;
Ich versuche nun aus

Delphi-Quellcode:
ElementCo := htmlDoc.link;
sowas wie

Delphi-Quellcode:
ElementCo := htmlDoc.tag;
zu machen um an die <tr> zu kommen.


Jo... Wie ihr seht steh ich ziemlich im Wald und es würde mich nicht wundern, wenn ich nen ganz anderen Weg gehen muss.
Aber leider seh ich mitlerweile bei den ganzen Variants und IDHTMLELEMENTEN usw. gar nicht mehr durch...
Bin auch was DOM und OLE angeht ein absoluter Anfänger(mit gefährlichem Halbwissen)...
:(

shmia 21. Mai 2008 12:55

Re: Webbrowser: <tr> </tr> suchen und Werte ausl
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von atreju2oo0
Bin auch was DOM und OLE angeht ein absoluter Anfänger(mit gefährlichem Halbwissen)...
:(

Ok, dann musst du erst mal auf sicheren Boden.
HTML kann man sich wie einen Baum vorstellen, der sich immer weiter verästelt bis zu den Blättern (das wären die einzelnen Texte und Attribute).
So einen Baum kann man gut als Treeview darstellen. (siehe Anhang)
Firefox kann das von Hause aus (irgendwo unter Hilfe -> DOM ....) beim IE muss man den MSDN-Library durchsuchenIE Developer Toolbar installieren.
Also entweder Firefox oder IE Developer Toolbar ist ein "must-have"!
Durch den angezeigten Baum siehst du, wieviele Ebenen du hinuntersteigen musst, bis du an deine <TABLE> bist.
So, ich lass das erst mal "sacken" bei dir.

Die Muhkuh 21. Mai 2008 12:57

Re: Webbrowser: <tr> </tr> suchen und Werte ausl
 
Zitat:

Zitat von shmia
Firefox kann das von Hause aus (irgendwo unter Hilfe -> DOM ....) beim IE muss man den MSDN-Library durchsuchenIE Developer Toolbar installieren.

Bei FireFox ist das auch nur ein AddOn, welches aber automatisch mitinstalliert wird. Zu finden ist das Ding unter Extras -> DOM-Inspector.

atreju2oo0 21. Mai 2008 13:16

Re: Webbrowser: <tr> </tr> suchen und Werte ausl
 
Danke für die Hinweise...

Bei Opera heisst das Dragonfly und ist seit der 9.5 mit dabei...
;)


Aber wie genau greif ich jetzt über den Webbrowser auf ein einzelnes Element aus diesem Baum zu?
Auf die Links kann ich ja bereits zugreifen...
Ich hätte halt gedacht, dass ich bei dem Source statt

Delphi-Quellcode:
ElementCo := htmlDoc.link;
nur nen anderen "Typ" angeben muss...
Ich will ja keine Links, sondern tables.

Ist dieser Gedankengang so richtig?

Achja: Die Tabelle hat beliebig viele Zeilen, die alle eingelesen werden sollen. Also kann ich nicht
mit nem festen Index auf die Werte zugreifen.

Bin Euch aber für weitere Links zum Thema dankbar.
Interessieren tuts mich ja schon... hab nur gerade nen bisschen Source-Frust...
;)

generic 21. Mai 2008 13:19

Re: Webbrowser: <tr> </tr> suchen und Werte ausl
 
Du kannst die Webseite in ein DOM-Objekt laden und dann mit XPATH alle Knoten auf einmal erfragen/finden.

Geht warscheinlich schneller, als wenn du manuell suchst.

atreju2oo0 21. Mai 2008 13:39

Re: Webbrowser: <tr> </tr> suchen und Werte ausl
 
Ich denke genau das will ich machen...

Mit Webbrowser.Document hab ich ja das DOM Objekt schon, oder?
Das muss ich nun nach meiner Tabelle durchsuchen...


Laut DOM Dokumentation von w3c müsste folgendes gehen:

Delphi-Quellcode:
showmessage(webbrowser.document.getElementById('myTable').rows[0].innerHTML);
Aber TurboDelphi kennt getElementById nicht...
Wo is da mein Denkfehler?

shmia 21. Mai 2008 14:26

Re: Webbrowser: <tr> </tr> suchen und Werte ausl
 
Zitat:

Zitat von atreju2oo0
Aber TurboDelphi kennt getElementById nicht...
Wo is da mein Denkfehler?

Dann brauchst du natürlich auch noch die offizielle Doku zu den Interfaces:
http://msdn.microsoft.com/en-us/libr...74(VS.85).aspx
und musst die ganze Zeit mit dem AS-Operator arbeiten.
Wenn du ein IHTMLElement am Wickel hast, dass aber eigentlich eine Tabelle ist, dann muss man mit as das Interface tauschen:
Delphi-Quellcode:
  elem := ....
  table := elem as IHTMLTable;
Um z.B. an die Methode getElementById zu kommen benötigt man IHTMLElement3:
Delphi-Quellcode:
(webbrowser.document.root as IHTMLElement3).getElementById(.....
Es empfiehlt sich, mit Zwischenvariablen zu arbeiten um nicht immer ganz ober über das Objekt webbrowser einsteigen zu müssen.

atreju2oo0 21. Mai 2008 14:58

Re: Webbrowser: <tr> </tr> suchen und Werte ausl
 
Danke Shmia...

Genau das casten war das Problem...
Hab immer auf IHTMLDocument2 versucht...

Ich denk jetzt ist der Knoten geplatzt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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