Autor Beitrag
d4nkuba
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 22.11.15 20:19 
Hallo,
ich suche eine komfortable lösung um bestimmte sachen aus dem html text zu filtern.
beispiel:
ausblenden HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
8:
<tr>
  <td align="left" bgcolor="#FFFFFF"><span class="Stil33"><u>Grundkosten</u></span></td>
  <td align="left" bgcolor="#FFFFFF"> </td>
</tr>
<tr>
  <td width="164" align="left" bgcolor="#CCCCCC"><span class="Stil26">monatl. Paketpreis: </span></td>
  <td width="330" align="left" bgcolor="#CCCCCC"><span class="Stil26">54,99 EUR </span></td>
</tr>

wie kann ich am besten Grundkosten 54,99 EUR rausfiltern?
Über eine Antwort würd ich mich freuen!

Moderiert von user profile iconTh69: HTML-Tags hinzugefügt
Moderiert von user profile iconTh69: Titel-Formatierung geändert.
Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Mo 23.11.2015 um 09:20
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 24.11.15 00:43 
Hallo und :welcome:

Wenn die Seite immer genau so aussieht und nur diesen Inhalt hat, kannst du z.B. diesen regulären Ausdruck verwenden:
ausblenden Quelltext
1:
<span class="Stil26">([0-9,]{1,}) EUR					


Ausprobieren und debuggen kannst du reguläre Ausdrücke hier:
regex101.com/
d4nkuba Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 28.11.15 14:53 
Das klappt leider nicht laut dem Debugger!
Außer, ich mache etwas bei der Ausgabe falsch.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Sa 28.11.15 15:11 
Ich empfehle, einer Gruppe immer einen Namen zu geben, z.B. so:

ausblenden Quelltext
1:
<span class="Stil26">(?<value>[0-9,]{1,}) EUR					


Über die Groups-Property kann dann aus dem Match der Wert der Gruppe abgerufen werden.
Wenn das nicht funktioniert, machst Du wohl irgendetwas falsch ;)
Was, das können wir dir nicht ohne Code sagen.


Allgemein halte ich Regex aber für die denkbar schlechteste Wahl um HTML zu parsen.
Entweder Du verwendest den in .NET vorhandenen WebBrowser (findest Du bei WindowsForms), oder Du nimmst eine externe Library.
Ich hab mir z.B. CsQuery angeschaut, das funktioniert ganz gut und bietet die Möglichkeit, CSS-Selektoren zu verwenden.
Schau dir das und CSS-Selektoren (kenne ich von JQuery) mal an, damit lässt sich der Wert relativ einfach heraus finden, vorausgesetzt der HTML-Code enthält sich nicht ändernde Klassen oder IDs, die Du als Anhaltspunkte nutzen kannst.

Wenn Du den Selektor klug wählst, kann sich der HTML-Code auch stärker verändern und dein Programm arbeitet dennoch korrekt.
Das hängtnatürlich immer von der Website selber ab, ist aber durchaus möglich.