![]() |
Texte aus HTML-Seite aulesen
Hallo,
ich möchte von dieser ![]() Gibt es da eine einfache Methode? Meine Lösung hierfür wäre, mit
Delphi-Quellcode:
den Code der Seite holen und dann nach den einzelnen Benzinpreisen suchen.
idHTML.Get
Wenn die gefunden wurden über Suchen von String-Teilen den Preis rauszufinden. Was gehen würde, aber vielleicht gibt es ja noch was einfacheres... |
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. |
AW: Texte aus HTML-Seite aulesen
Zitat:
Zitat:
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? |
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\,]+) EUR / Liter </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; |
AW: Texte aus HTML-Seite aulesen
Alternativ könnte man es auch mit einem HTML-Parser versuchen.
Mfg |
AW: Texte aus HTML-Seite aulesen
Zitat:
Funktioniert sehr gut, Danke! - Trotz dem schon fortgeschrittenen Tages :-) Wo kann man die Syntax der regulären Ausdrücke nachlesen? |
AW: Texte aus HTML-Seite aulesen
Zitat:
![]() ![]() |
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.
|
AW: Texte aus HTML-Seite aulesen
Danke Danke für die Informationen
Wie sehr sind reguläre Ausdrücke geschwindigkeitsrelevant? |
AW: Texte aus HTML-Seite aulesen
Ich hab grad ein nette Seite über reguläre Ausdrücke gefunden:
![]() 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:
Was ist daran falsch?
reg.RegEx := '<td><h2>Preisfixing, ausgegeben am \d+\.\d+\.\d* \d+:\d+ (MEZ)</h2></td>';
[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:01 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