AGB  ·  Datenschutz  ·  Impressum  







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

Daten aus HTML-Code auslesen (RegEx,...)

Ein Thema von Helmi · begonnen am 6. Feb 2025 · letzter Beitrag vom 6. Feb 2025
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.338 Beiträge
 
Delphi XE2 Professional
 
#1

Daten aus HTML-Code auslesen (RegEx,...)

  Alt Gestern, 10:34
Hallo Zusammen,

ich bräuchte mal ein paar Ideen eurerseits.

Ich habe einen HTML-Text, in dem u. a. eine solche Tabelle abgebildet ist:
Code:
</header>
   
    <div class="container content-layout">
        <div class="row">
            <div class="col-md-2 left-layout-col">
                    <strong class="table-head">Günstigste Preise</strong>
    <table class="left-statistic">
        <thead>
            <tr>
                <th>Sorte</th>
                <th>Preis</th>
            </tr>
        </thead>

            <tr>
                <td>
                    Diesel
                </td>
                <td><a href="/tankstelle/bft-1696" rel="nofollow">1,529</a></td>
            </tr>
            <tr>
                <td>
                    Super E10
                </td>
                <td><a href="/tankstelle/esso-119" rel="nofollow">1,359</a></td>
            </tr>
            <tr>
                <td>
                    Super E5
                </td>
                <td><a href="/tankstelle/landwirtschaftliche-bezugsgenossenschaft-eg-2642" rel="nofollow">1,564</a></td>
            </tr>
    </table>
Ich möchte an die Namen (Diesel, Super E10, Super E5) und an die Preise darunter: <td><a href="/tankstelle/esso-119" rel="nofollow">1,359</a></td>

Ich tendiere jetzt zu RegEx, schon allein, weil ich es schon in dem Projekt verwende.
Aber hat jemand eine andere Idee, wie ich an die Werte kommen könnte?
Vielleicht gibt es ja auch noch was einfacheres?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
301 Beiträge
 
Delphi 12 Athens
 
#2

AW: Daten aus HTML-Code auslesen (RegEx,...)

  Alt Gestern, 10:42
Wenn der Aufbau der HTML bekannt und verlässlich gleichbleibend ist, könnte man sie vielleicht als XML auslesen (IXMLDocument etc verwenden und den Text reinlesen). Ich bin mir nicht sicher, ob ich das schonmal gemacht habe, aber zumindest in der Theorie sollte das funktionieren.
Hätte den Vorteil, dass man es ordentlich automatisieren kann, anstatt mit RegEx herumfuchteln zu müssen.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.338 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Daten aus HTML-Code auslesen (RegEx,...)

  Alt Gestern, 10:49
Wenn der Aufbau der HTML bekannt und verlässlich gleichbleibend ist, könnte man sie vielleicht als XML auslesen (IXMLDocument etc verwenden und den Text reinlesen). Ich bin mir nicht sicher, ob ich das schonmal gemacht habe, aber zumindest in der Theorie sollte das funktionieren.
Hätte den Vorteil, dass man es ordentlich automatisieren kann, anstatt mit RegEx herumfuchteln zu müssen.
Ich möchte mich jetzt nicht darauf verlassen, dass der Aufbau gleichbleibend ist
Insgesamt wären es drei Tabellen.

Dein Vorschlag würde mir gut gefallen - wäre einfacher als RegEx und sollte man doch noch etwas parsen müssen, dann wäre der entsprechende Text kürzer
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.537 Beiträge
 
Delphi 7 Professional
 
#4

AW: Daten aus HTML-Code auslesen (RegEx,...)

  Alt Gestern, 11:13
Zuerst die Datei in eine Stringliste einlesen. Dann alle Zeilen von führenden und folgenden Leerzeichen befreien.

Dann die Datei in eine Stream schieben und diesen zeichenweise in einen zweiten Stream schreiben. Dabei vor allen < einen Zeilenumbruch schreiben und hinter jedem > ebenfalls einen Zeilenumbruch schreiben. Alle vorhandenen Zeilenumbrüche werden durch ein Leerzeichen ersetzt.

Das Ergebnis wieder in die Stringliste kopieren.

Dort hast Du dann alle Tags und Texte jeweils in einer eigenen Zeile.

Aus
HTML-Code:
            <tr>
                <td>
                    Diesel
                </td>
                <td><a href="/tankstelle/bft-1696" rel="nofollow">1,529</a></td>
            </tr>
wird dann
HTML-Code:
<tr>
<td>
Diesel
</td>
<td>
<a href="/tankstelle/bft-1696" rel="nofollow">
1,529
</a>
</td>
</tr>
Nun kannst Du am Anfang der Stringliste alle Zeilen bis einschließlich </thead> löschen.
Am Ende der Stringliste löschst Du alle Zeilen bis zum letzten </tr>.

Damit hast Du nun nur noch den Tabelleninhalt in der Stringliste.

Anschließend löschst Du alle Zeilen, die nicht mit einem < beginnen.
Die verbleibenden Zeilen befreist Du von führenden und folgenden Leerzeichen.
Leere Zeilen werden anschließend entfernt.

Übrig bleiben dann
Code:
Diesel
1,529
Super E10
1,359
Super E5
1,564
Lässt sich mit 'ner Reihe von For-Schleifen recht einfach und schnell realisieren.

Geändert von Delphi.Narium (Gestern um 11:25 Uhr)
  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 13:55 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 by Thomas Breitkreuz