Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Texte aus HTML-Seite aulesen (https://www.delphipraxis.net/175547-texte-aus-html-seite-aulesen.html)

Helmi 30. Jun 2013 08:26

Texte aus HTML-Seite aulesen
 
Hallo,

ich möchte von dieser Webseite die Tabelle mit den Benzin-Namen und -Preisen auslesen.

Gibt es da eine einfache Methode?

Meine Lösung hierfür wäre, mit
Delphi-Quellcode:
idHTML.Get
den Code der Seite holen und dann nach den einzelnen Benzinpreisen suchen.
Wenn die gefunden wurden über Suchen von String-Teilen den Preis rauszufinden.
Was gehen würde, aber vielleicht gibt es ja noch was einfacheres...

Daniel 30. Jun 2013 08:35

AW: Texte aus HTML-Seite aulesen
 
Beim Abgreifen von Daten muss mann stets schauen, dem Betreiber damit nicht auf die Füße zu treten.
Davon aber mal abgesehen würde ich es mit einem regulären Ausdruck versuchen. Über die dort auf der Seite verwendete CSS-Klasse "preisfixing" müsste man eigentlich einen hinreichend starkten Orientierungspunkt haben.

Helmi 30. Jun 2013 08:42

AW: Texte aus HTML-Seite aulesen
 
Zitat:

Zitat von Daniel (Beitrag 1220099)
Beim Abgreifen von Daten muss mann stets schauen, dem Betreiber damit nicht auf die Füße zu treten.

Ich bin mir dem bewusst - natürlich ist das nur für den privaten Gebrauch


Zitat:

Zitat von Daniel (Beitrag 1220099)
Davon aber mal abgesehen würde ich es mit einem regulären Ausdruck versuchen. Über die dort auf der Seite verwendete CSS-Klasse "preisfixing" müsste man eigentlich einen hinreichend starkten Orientierungspunkt haben.

Mit regulären Ausdrücken hab ich bislang noch nicht gearbeitet

Das Suchen nach den einzelnen Namen müsste man aber trotzdem machen und mit den regulären Ausdrücken dann ab diesem Suchpunkt arbeiten, oder?

Daniel 30. Jun 2013 09:10

AW: Texte aus HTML-Seite aulesen
 
Es ist ein wenig dahingeschlunzt, aber in Anbetracht der frühen Uhrzeit vielleicht ein akzeptabler Ausgangspunkt, der deutlich macht, wie man sowohl die Namen als auch die Preise ermitteln könnte.

Delphi-Quellcode:
uses
  System.RegularExpressions, System.RegularExpressionsCore;

procedure TForm1.DoFetchData;
var reg : TPerlRegEx;
begin
  /// die namen ermitteln
  reg:= TPerlRegEx.Create;
  reg.RegEx:= '<td class=preisfixing([\=\w\ ]+)>(\w+)</td>';
  reg.Subject:= memo1.Lines.Text;

  if reg.Match then
  begin
    memo2.Lines.Add( reg.Groups[2] );
    while reg.MatchAgain do
    begin
      memo2.Lines.Add( reg.Groups[2] );
    end;
  end;
  reg.Free;


  /// die preise ermitteln
  reg:= TPerlRegEx.Create;
  reg.RegEx:= '<td class=preisfixing([\=\w\ ]+)><b>([0-9\,]+)&nbsp;EUR / Liter&nbsp;</b></td>';
  reg.Subject:= memo1.Lines.Text;

  if reg.Match then
  begin
    memo2.Lines.Add( reg.Groups[2] );
    while reg.MatchAgain do
    begin
      memo2.Lines.Add( reg.Groups[2] );
    end;
  end;
  reg.Free;
end;

Ginko 30. Jun 2013 09:17

AW: Texte aus HTML-Seite aulesen
 
Alternativ könnte man es auch mit einem HTML-Parser versuchen.

Mfg

Helmi 30. Jun 2013 09:19

AW: Texte aus HTML-Seite aulesen
 
Zitat:

Zitat von Daniel (Beitrag 1220101)
Es ist ein wenig dahingeschlunzt, aber in Anbetracht der frühen Uhrzeit vielleicht ein akzeptabler Ausgangspunkt, der deutlich macht, wie man sowohl die Namen als auch die Preise ermitteln könnte.

Na dass nenn ich mal Chef-(arzt-)Behandlung :mrgreen:
Funktioniert sehr gut, Danke! - Trotz dem schon fortgeschrittenen Tages :-)

Wo kann man die Syntax der regulären Ausdrücke nachlesen?

Ginko 30. Jun 2013 09:32

AW: Texte aus HTML-Seite aulesen
 
Zitat:

Zitat von Helmi (Beitrag 1220103)
Wo kann man die Syntax der regulären Ausdrücke nachlesen?

Z.B. hier:
http://docwiki.embarcadero.com/Libra...ore.TPerlRegEx
http://www.regular-expressions.info/

Daniel 30. Jun 2013 09:41

AW: Texte aus HTML-Seite aulesen
 
Es gibt für die "Regulären Ausdrücke" einen Quasi-Standard, der nennt sich "Perl-kompatible reguläre Ausdrücke". Im Großen und Ganzen passt das ziemlich gut auch bei der Delphi-Komponente. Das bedeutet für Dich, dass Du Dir auch ruhigen Gewissens z.B. ein PHP-Tutorial zu dem Thema anschauen kannst, wenn Du in dem Bereich ein schönes findest.

Helmi 30. Jun 2013 09:56

AW: Texte aus HTML-Seite aulesen
 
Danke Danke für die Informationen

Wie sehr sind reguläre Ausdrücke geschwindigkeitsrelevant?

Helmi 30. Jun 2013 11:10

AW: Texte aus HTML-Seite aulesen
 
Ich hab grad ein nette Seite über reguläre Ausdrücke gefunden: http://www.regenechsen.de/phpwcms/in...d=66,0,0,1,0,0

Aber irgendwie komm ich grad ned klar:

Ich hab folgenden String:
'<td><h2>Preisfixing, ausgegeben am 30.06.2013 10:04 (MEZ)</h2></td>'

und möchte nun nen regulären Ausdruck für das Datum mit Zeit
Aber das gibt leider nichts zurück:
Delphi-Quellcode:
    reg.RegEx := '<td><h2>Preisfixing, ausgegeben am \d+\.\d+\.\d*  \d+:\d+ (MEZ)</h2></td>';
Was ist daran falsch?

[Edit]
Fehler gefunden:
Muss natürlich das Datum und die Zeit in Klammern setzen
und dann Groups anpassen

Delphi-Quellcode:
    reg.RegEx := '<td><h2>Preisfixing, ausgegeben am (\d+\.\d+\.\d*\  \d+:\d+)';
    reg.Subject := Memo1.Lines.Text;

    If reg.Match then
      begin
        Memo2.Lines.Add(reg.Groups[1]);

        while reg.MatchAgain do
          Memo2.Lines.Add(reg.Groups[1]);
      end;


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