AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tabelle aus HTML auslesen

Ein Thema von Captnemo · begonnen am 26. Okt 2012 · letzter Beitrag vom 23. Aug 2016
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

AW: Tabelle aus HTML auslesen

  Alt 26. Okt 2012, 07:45
Es ist aber eine (HTML-)Tabelle im Dokument enthalten? Moderne Systeme verwenden ja zunehmenst immer weniger originäre HTML-Tags und ersetzen alles durch JS erzeugte Konstrukte ( Selbst Links und Bilder werden oft so eingebunden)
Meinst du mir JS JavaScript? Ich kenne das auch mit css.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Tabelle aus HTML auslesen

  Alt 26. Okt 2012, 07:49
@Captnemo

Wobei, aber da weiß ich nicht wie man das lösen kann, ist eine über den Browser kopierte Tabelle eine Tabgetrennte CSV-Tabelle. Und es ist ja nichts leichter als eine CSV-Tabelle einzulesen.

Oder muß es über den Quellcode der Html-Seite sein?
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#3

AW: Tabelle aus HTML auslesen

  Alt 26. Okt 2012, 07:57
Die Tabelle ist im Document schon mit den herkömlichen Tags <table>...</table> realisiert. Java/CSS wird nur für das Menü und ein paar Darstellungen verwendet.

Natürlich würde das ggf. auch über copy/paste gehen. Finde ich aber nicht so glücklich, weil ich dann ja immer aufpassen muß, was denn der Anwender mit seiner Maus noch so alles markiert und mit kopiert hat.

Nein, das sollte schon direkt im Quellcode gehen.
Ich kann natürlich auch einfach den Quellcode nehmen, alles rausschmeißen, was ich nicht brauche, die table isolieren und dann das ganze direkt auslesen. Aber ich dachte mir wenn es mit MSHTML besser geht, wäre das ja eleganter.
Nur habe ich damit noch so gar keine Erfahrungen.

Und wie in meinem ersten Post bereits geschrieben, wäre es toll und hilfreich, wenn ich innerhalb der Procedure/Functionen mir die Variablen ansehen könnte. Aber weil das alles nur Pointer sind, weiß ich nicht, wie ich an die dahinter liegenden Daten rankomme.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Tabelle aus HTML auslesen

  Alt 26. Okt 2012, 08:06
An für sich ist es nicht so schwer, auch den HTML Code parsen. Ich weiß, dass ich das mindestens schon ein mal ümgesetzt habe, vielleicht sogar als Beispiel hier irgendwo, oder DelphiForum. Demnach müßte es schon hier irgendwo rumliegen. Ich suche mal.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Tabelle aus HTML auslesen

  Alt 26. Okt 2012, 10:06
Ich hab Just4Fun einen Parser programmiert. Memo1 enthält den ganzen Html-Code, es wird die erste gefundene Tabelle bearbeitet, Ergebnis steht im Memo2. Zwei Probleme gibt es noch: es wird nur nach kleingeschriebenen Tags gesucht, hier muß es noch so umgeschrieben werden, dass Groß-/Kleinschriebung nicht beachtet wird. Dann müssen noch die Umlaute (M&uuml;nchen für München) konvertiert werden.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

  function MyPos(Substr: string; S: string): Integer;
  begin
    Result := Pos(Substr, S);
  end;

  function ExtractTagArea(var HtmlCode: String; Tag: String): String;
  var
    p: Integer;
  begin
    Result := HtmlCode;
    p := MyPos('<' + Tag, Result);
    if p > 0 then Delete(Result, 1, p);
    p := MyPos('>', Result);
    if p > 0 then Delete(Result, 1, p);
    p := MyPos('</' + Tag + '>', Result);
    if p > 0 then
    begin
      HtmlCode := Copy(Result, p + Length('</' + Tag + '>'), MaxInt);
      Delete(Result, p, MaxInt);
    end;
  end;

  function TrLineToCsvLine(TrLine, Tag: String): String;
  var
    sTd: String;
  begin
    Result := '';
    while MyPos('<' + Tag, TrLine) > 0 do
    begin
      sTd := ExtractTagArea(TrLine, Tag);
      Result := Result + sTd;
      if MyPos('<' + Tag, TrLine) > 0 then Result := Result + #9;
    end;
  end;

var
  sTmp, sTabelle, sTr: String;
  sl: TStringList;
  s: String;
begin
  sl := TStringList.Create;
  try
    sTmp := Memo1.Lines.Text;
    sTabelle := ExtractTagArea(sTmp, 'table');

    while MyPos('<tr', sTabelle) > 0 do
    begin
      sTr := ExtractTagArea(sTabelle, 'tr');

      s := TrLineToCsvLine(sTr, 'th');
      if Length(s) = 0 then
        s := TrLineToCsvLine(sTr, 'td');

      sl.Add(s);
    end;

    Memo2.Lines.Text := sl.Text;
  finally
    sl.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Tabelle aus HTML auslesen

  Alt 26. Okt 2012, 13:49
Und wie in meinem ersten Post bereits geschrieben, wäre es toll und hilfreich, wenn ich innerhalb der Procedure/Functionen mir die Variablen ansehen könnte. Aber weil das alles nur Pointer sind, weiß ich nicht, wie ich an die dahinter liegenden Daten rankomme.
Wo ist da das problem?
a) Du hast
Delphi-Quellcode:
type
  tmyarray : array [0..2] of byte;
var
  poptr= ^myarray;
mit poptr^ werden im Debugger 3 Byte angezeigt.

b) Du hast einen "nackten" Pointer
Delphi-Quellcode:
type
  tmyarray : array [0..2] of byte;
var
  poptr= pointer;
dann erhälst Du mit myarray(poptr^)[0] das erste Byte von der Adresse auf die der Pointer zeigt, und mit integer(poptr^) den wert der gleichen Speicheradresse als Integer.
Das Funktioniert natürlich auch mit anderen Typen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#7

AW: Tabelle aus HTML auslesen

  Alt 29. Okt 2012, 08:01
Komme leider mit den Beispielen nicht weiter. Der Grund wird sein, dass die Seite aus der ich die Daten auslesen muß Frames verwendet. Das wäre ja nicht so schlimm, denn es gibt ja einige Beispiele, die beschreiben wie man den Inhalt der Frameset ausliest.
Nur blöderweise verwendet die Webseite verschachtelte Framesets. Und ich komme da einfach nicht ran. Bei allen Möglichkeiten, die ich ausprobiert habe, komme ich immer nur zum ersten Frameset, aber nicht an die in der Tiefe.
Als Anlage mal ein Bild, wenn ich im Internetexplorer mir das mit den Entwicklertools anzeigen lassen.

Kann mir jemand helfen, wie ich da ran komme?
Angehängte Grafiken
Dateityp: jpg htmlseite.jpg (156,9 KB, 35x aufgerufen)
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#8

AW: Tabelle aus HTML auslesen

  Alt 31. Okt 2012, 07:05
Weil ich keine Lösung für mein Problem gefunden habe, bin jetzt dazu übergegangen mir einfach den im TWebbrowser angezeigten Text in einen String zu kopieren und suche mir die gewünschten Werte dort raus. Zum Glück werden ja alle benötigten Daten auch direkt auf der Webseite angezeigt.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#9

AW: Tabelle aus HTML auslesen

  Alt 31. Okt 2012, 08:43
Hi,

eine Möglichkeit, die ich mir noch vorstellen könnte, wäre, dass Du die Seite, die in das Frame geladen wird, direkt lädst und dann Deine ursprüngliche Vorgehensweise auf diese Seite anwendest.
Du bekommst doch vom Browser entweder nur den Quelltext für das Frameset (ohne Inhalte) oder die Quelltexte für jeden Frame einzeln, also eigentlich nix anderes oder?

Grüße
Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  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 18:32 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