Hallo Scala-ianer,
ich suche einen besseren Weg um Werte aus einer Html Table zu extrahieren.
Die Table sieht so aus:
<table width="597" border="0" cellspacing="0" cellpadding="0" summary="blah blah">
<tr><td colspan="8" class="dateline">Fr. 01.10.10</td></tr>
<tr>
<td width="38" class="planline0">TIME</td>
<td width="57" class="planline0">CATEGORY</td>
<td width="20" class="planline0">ID</td>
<td width="96" class="planline0">TEXT1</td>
<td width="108" class="planline0">TEXT2</td>
<td width="77" class="planline0" style="..."> </td>
<td width="77" class="planline0" style="...">2,75 (1:1)</td>
<td width="101" class="planline0" style="..."> </td>
</tr>
<tr>
<td width="38" class="planline1">TIME</td>
<td width="57" class="planline1">CATEGORY</td>
<td width="20" class="planline1">ID</td>
<td width="96" class="planline1">TEXT1</td>
<td width="108" class="planline1">TEXT2</td>
<td width="77" class="planline1" style="..."> </td>
<td width="77" class="planline1" style="..."> </td>
<td width="101" class="planline1" style="...">1,40 (1:2)</td>
</tr>
...
...
</table>
Es kommen also 2 Typen von tr's. Einmal mit einem td class ="dateline" und einmal mit mit exact 8 td's wie oben.
Mein erster Schnellschuss um die zu parsen war folged:
(die table bekomme ich in einer Zeile von einer seite)
1. replace tr with \n<tr dann splitt nach \n
2 each line ( contains class="dateline" or contains class="planline)
3. jenachdem extrahiere ich:
- dateline mit einen RegExExtractor : """<tr><td colspan="\d" class="dateline">(.+)</td></tr>""".r
- bei planline htmlLine.replaceAll("<tr>","").replaceAll("</tr>","").replaceAll("<td>", "\n<td>").split("</td>")
dann hole ich mir alles ab lastIndexOf(">")
Dies gefällt mir eigentlich gar nicht, und das war nur eine übergangslösung um weiter zu kommen.
Scala kann doch nativ xml - hab da was ausprbiert aber ne exception des internen SAX parsers hat mich davon abgehalten.
Irgendwie konnte man nicht die table als XML umwandeln - wahrscheinlich nicht xhtml konform oder so.
Wennda gehen würde würde ich mir die ganzen regex sachen Sparen können.
und einfach für jedes tr die children hole und jenachdem passend mit .text - den htmltext extrahieren.
Hat jemand schon sowas gemacht?
Strings ins xml umwandeln und damit gearbeitet ?
Im Voraus Vielen Dank für Tipps und Vorschläge
Grüße
DaveX
ich suche einen besseren Weg um Werte aus einer Html Table zu extrahieren.
Die Table sieht so aus:
<table width="597" border="0" cellspacing="0" cellpadding="0" summary="blah blah">
<tr><td colspan="8" class="dateline">Fr. 01.10.10</td></tr>
<tr>
<td width="38" class="planline0">TIME</td>
<td width="57" class="planline0">CATEGORY</td>
<td width="20" class="planline0">ID</td>
<td width="96" class="planline0">TEXT1</td>
<td width="108" class="planline0">TEXT2</td>
<td width="77" class="planline0" style="..."> </td>
<td width="77" class="planline0" style="...">2,75 (1:1)</td>
<td width="101" class="planline0" style="..."> </td>
</tr>
<tr>
<td width="38" class="planline1">TIME</td>
<td width="57" class="planline1">CATEGORY</td>
<td width="20" class="planline1">ID</td>
<td width="96" class="planline1">TEXT1</td>
<td width="108" class="planline1">TEXT2</td>
<td width="77" class="planline1" style="..."> </td>
<td width="77" class="planline1" style="..."> </td>
<td width="101" class="planline1" style="...">1,40 (1:2)</td>
</tr>
...
...
</table>
Es kommen also 2 Typen von tr's. Einmal mit einem td class ="dateline" und einmal mit mit exact 8 td's wie oben.
Mein erster Schnellschuss um die zu parsen war folged:
(die table bekomme ich in einer Zeile von einer seite)
1. replace tr with \n<tr dann splitt nach \n
2 each line ( contains class="dateline" or contains class="planline)
3. jenachdem extrahiere ich:
- dateline mit einen RegExExtractor : """<tr><td colspan="\d" class="dateline">(.+)</td></tr>""".r
- bei planline htmlLine.replaceAll("<tr>","").replaceAll("</tr>","").replaceAll("<td>", "\n<td>").split("</td>")
dann hole ich mir alles ab lastIndexOf(">")
Dies gefällt mir eigentlich gar nicht, und das war nur eine übergangslösung um weiter zu kommen.
Scala kann doch nativ xml - hab da was ausprbiert aber ne exception des internen SAX parsers hat mich davon abgehalten.
Irgendwie konnte man nicht die table als XML umwandeln - wahrscheinlich nicht xhtml konform oder so.
Wennda gehen würde würde ich mir die ganzen regex sachen Sparen können.
und einfach für jedes tr die children hole und jenachdem passend mit .text - den htmltext extrahieren.
Hat jemand schon sowas gemacht?
Strings ins xml umwandeln und damit gearbeitet ?
Im Voraus Vielen Dank für Tipps und Vorschläge
Grüße
DaveX