AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Tabelle mit TWebbrowser auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Tabelle mit TWebbrowser auslesen

Ein Thema von Onkelrossie · begonnen am 9. Mai 2009 · letzter Beitrag vom 10. Mai 2009
Antwort Antwort
Onkelrossie

Registriert seit: 7. Aug 2006
43 Beiträge
 
Delphi 7 Architect
 
#1

Tabelle mit TWebbrowser auslesen

  Alt 9. Mai 2009, 20:49
Hallo und guten Abend Ihr Lieben,

ich habe mal wieder ein Problem wo ich mit Lesen alleine nicht weiter komme.
Ich Suche nun schon seit mehreren Tagen über Google und die Forumsuche aber
alles was ich bisher finden konnte, half mir nicht wirklich weiter.

Ich versuche mit dem TWebbrowser eine Tabelle mit Kundendaten die bei uns im Intranet
zu finden ist, auzulesen und in ein Record zu speichern.
Mit Records bin ich sehr vertraut das ist nicht mein Problem.
Ich komme nur nicht an die Daten der Tabelle sprich ich weiß nicht wie ich diese
auslesen soll.

Erstmal hier ein auszug aus der Tabelle damit Ihr den aufbau mal sehen könnt:

Delphi-Quellcode:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en-AU">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta name="author" content="fullahead.org" />
  <meta name="keywords" content="reflection, fullahead, pat, OSWD, more, keywords, separated, with, commas" />
  <meta name="description" content="OSWD reflection XHTML template by fullahead.org" />
  
  <title>Kundendaten</title>

  <link rel="stylesheet" type="text/css" href="screen_yellow.css" media="screen, tv, projection" />
</head>

<body>
...
!weiterer HTML und Javascript Code!
...
<table width="82%" border="1" align="center" cellpadding="0" cellspacing="0" class="norm">
  <tr>
    <td >[url="index.php?p=list&Data=1&order=name&wie=asc"]Name[/url]</td>
    <td >[url="index.php?p=list&Data=1&order=vorname&wie=asc"]Vorname[/url]</td>
    <td >[url="index.php?p=list&Data=1&order=strasse&wie=asc"]Strasse[/url]</td>
    <td >[url="index.php?p=list&Data=1&order=hausnummer&wie=asc"]Hausnummer[/url]</td>
    <td >[url="index.php?p=list&Data=1&order=plz&wie=asc"]PLZ[/url]</td>
    <td >[url="index.php?p=list&Data=1&order=ort&wie=asc"]Ort[/url]</td>
    <td >[url="index.php?p=list&Data=1&order=land&wie=asc"]Land[/url]</td>
    <td >[url="index.php?p=list&Data=1&order=telefon&wie=asc"]Telefon[/url]</td>   
  </tr>
  
  <tr>
    <td>Mustermann</td>
    <td>Max</td>
    <td>Musterstrasse</td>
    <td>1</td>   
    <td>00001</td>
    <td>Musterhausen</td>
    <td>Deutschland</td>
    <td>0123/4567890</td>
  </tr>
  
  <tr>
    <td>Müller</td>
    <td>Monika</td>
    <td>Müllerring</td>
    <td>9</td>   
    <td>00002</td>
    <td>Müllerhausen</td>
    <td>Deutschland</td>
    <td>3210/0987654</td>
  </tr>
</table>
...
!weiterer HTML und Javascript Code!
...
</body>
</html>
Wie Ihr sehen könnt hat die Tabelle keinen eindeutigen Namen.
Es ist auch nur eine Tabelle auf der gesammten Seite vorhanden.
Irgendwie muss es doch möglich sein an die Daten ran zu kommen?

Ich habe es schon mit den Tipps von hier und hier versucht aber das setzt immer voraus das man den Namen der Tabelle kennt.

Versuche ich das ganze mit idHTTP oder als XML zu Parsen ->
Zitat von marabu:
Hallo Hoschie,

an den XML-Source des WebBrowsers kommst du per late binding:
Delphi-Quellcode:
var
  ws: WideString;
  doc: OleVariant;
begin
  doc := WebBrowser.Document;
  ws := doc.XMLDocument.XML;
  ShowMessage(ws);
end;
Freundliche Grüße
bekomme ich immer den Fehler: Method 'XMLDocument' not supported by automation object.

Bisher kam ich immer gut zurecht mit folgendem Code den ich auch gut verstehe:
Webbrowser1.OleObject.Document.Forms.Item('form1').Elements.Item(0).Value := Edit1.Text; Damit kann ich die Seite wie eine XML-Datei (Baumkonstrukt) auslesen.
Das hat immer geklappt bis auf das auslesen von Tabellen.

Wie müsste ich im Optimalfall den Code verändern damit er auch bei Tabellen geht?
Oder muss ich hier auf eine ganz andere Methode zurück greifen?

Am liebsten wäre es mir wie gesagt die Tabelle direkt mit dem Webbrowser
auszulesen bzw. zu parsen. Das muss doch irgendwie gehen. Eine Combobox kann ich ja auch
ohne weiteres mit einer For-Schleife und dem o.g. Code (etwas abgewandelt) auslesen.

Ich habe schon so viel versucht und bin mit meinem Latain am Ende.
Bin euch für jede weitere Hilfe dankbar!

Vielen Dank schonmal im Voraus!


Mit freundlichen Grüßen
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Tabelle mit TWebbrowser auslesen

  Alt 9. Mai 2009, 21:20
Hallo

Ansatz ohne Verwendung von TWebbrowser, mit IdHttp und Ermittlung von
IHTMLDocument2:

Delphi-Quellcode:
function GetDocument(const markup: WideString): IDispatch;
var
  doc: OleVariant;
begin
  Result := CoHtmlDocument.Create;
  doc := Result;
  doc.Open;
  doc.Write(markup);
  doc.Close;
end;

var
  docd: IDispatch;
  doc: IHTMLDOCUMENT2;
  url: String;
  itable: IHTMLTable;
begin
  url := 'http://www.DeineURL.xyz';
  doc := GetDocument(IdHttp1.Get(url)) as IHTMLDocument2;
  GetTable(Doc, 0, itable) // siehe Link unten
  etc..
end;

Die Tabelle kannst du dann wie hier gezeigt wird parsen.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#3

Re: Tabelle mit TWebbrowser auslesen

  Alt 9. Mai 2009, 23:19
Hallo,

Zitat von Onkelrossie:
... Am liebsten wäre es mir wie gesagt die Tabelle direkt mit dem Webbrowser
auszulesen bzw. zu parsen.
dort Link ein Ansatz direkt mit dem WebBrowser.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Onkelrossie

Registriert seit: 7. Aug 2006
43 Beiträge
 
Delphi 7 Architect
 
#4

Re: Tabelle mit TWebbrowser auslesen

  Alt 10. Mai 2009, 13:20
Vielen Dank für eure Antworten!
Habe mich für die Lösung von Lannes entschieden und komme sehr gut damit zurecht.


MfG
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von Wunni
Wunni

Registriert seit: 1. Mai 2003
Ort: Hamburg
46 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Tabelle mit TWebbrowser auslesen

  Alt 10. Mai 2009, 15:25
ich finde die hier auch ganz gut:

http://www.yunqa.de/delphi/doku.php/...parser/plugins

...
The Table plugin keeps tracks of HTML tables encountered during the parsing. Other parsing processes can query the Table plugin about the table cell and column and the table nesting.
Andreas Wunnenberg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 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