HTML table converteren naar RML table

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • marktweakt
  • Registratie: December 2010
  • Laatst online: 01-10 16:19
Mijn vraag

Ik wil regelmatig een HTML table hier op dit forum plaatsen.
Het forum gebruikt een RML formaat voor opmaak in posts waarbij rechte haken ('[' en ']')
voor de tags worden gebruikt.

Zo heb ik bijvoorbeeld de volgende html tabel gekopieerd die ik hier zou willen plaatsen:

<table cellpadding="0" cellspacing="0" style="width:100%">
<tbody>
<tr>
<td style="background-color: rgb(255, 221, 0);">
<p><strong>Maatregelen volgens Overstappen.nl</strong></p>
</td>
<td style="background-color: rgb(255, 221, 0);">
<p><strong>Energiebedrijf</strong></p>
</td>
</tr>
<tr>
<td>
<p><em>Geen enkele maatregel</em></p>
</td>
<td>
<p>Clean Energy<br />
<span style="font-family:inherit; font-size:1rem">Next Energy</span><br />
<span style="font-family:inherit; font-size:1rem">Tibber</span></p>
</td>
</tr>
<tr>
<td>
<p><em>Vaste terugleverkosten zonnepaneelbezitters</em></p>
</td>
<td>
<p>BudgetEnergie<br />
<span style="font-family:inherit; font-size:1rem">Gewoon Energie</span><br />
<span style="font-family:inherit; font-size:1rem">Innova</span><br />
<span style="font-family:inherit; font-size:1rem">MEGA</span><br />
<span style="font-family:inherit; font-size:1rem">OM (Samen Om)</span><br />
<span style="font-family:inherit; font-size:1rem">Vandebron<br />
</span><span style="font-family:inherit; font-size:1rem">Vrijopnaam</span></p>
</td>
</tr>
<tr>
<td>
<p><em>Geen meerjarig contract voor zonnepaneelbezitters</em></p>
</td>
<td>
<p>DELTA<br />
Energiedirect.nl<br />
Essent<br />
Powerpeers</p>
</td>
</tr>
<tr>
<td>
<p><em>Geen aanbod bij nettoteruglevering (meer opwek dan verbruik)</em></p>
</td>
<td>
<p>Coolblue Energie<br />
Eneco<br />
ENGIE<br />
Oxxio<br />
Pure Energie<br />
United Consumers</p>
</td>
</tr>
<tr>
<td>
<p><em>Geen korting voor klanten met zonnepanelen, of een ongunstiger aanbod</em></p>
</td>
<td>
<p>Frank Energie<br />
Greenchoice<br />
Vattenfall</p>
</td>
</tr>
</tbody>
</table>

Ik kan nergens een goede converter vinden die deze tabel goed omzet naar het RML formaat wat hier wordt gebruikt.

Weet iemand een oplossing hiervoor want het is nogal wat werk om telkens de tabel met de hand te moeten omzetten?

Relevante software en hardware die ik gebruik
Ik gebruik zelf linux Mint

Wat ik al gevonden of geprobeerd heb
Ik heb een python bibliotheek gevonden die zegt HTML naar RML te converter, maar als ik op de github pagina kijk dan ziet dit RML er toch een stuk anders uit dan wat hier wordt gebruikt. Zie: https://github.com/misli/html2rml

Verschillende online converters geprobeerd (html naar rml en html naar ubb) maar geen enkele lijkt de voorbeeld html tabel goed om te zetten naar een rml tabel.

En ik ben zelf begonnen met een script waarmee met reguliere expressies (met behulp van sed) zo'n tabel omgezet kan worden. Maar er komt nog best veel bij kijken dus zou ik liever een bestaand programma gebruiken.

Alle reacties


Acties:
  • 0 Henk 'm!

  • marktweakt
  • Registratie: December 2010
  • Laatst online: 01-10 16:19
<te vroeg gejuicht>

[ Voor 87% gewijzigd door marktweakt op 04-03-2024 17:39 ]


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 00:31

AW_Bos

Liefhebber van nostalgie... 🕰️

Speelt dit nog steeds?

Ik heb geen idee wat voor RML die GitHub precies gebruikt, maar dat is niet de RML die hier gebruikt wordt. Totaal wat anders dus....

RML, de opmaakcodes van dit forum lijken erg op de old-skoel collectie UBB-codes, die weer wat weg hebben van HTML, maar dan met blokhaken in plaats van vissenhaakjes. De argumenten werken echter net wat anders.

Als eerste kan je gewoon de < en > vervangen door [ en ]. Dan houd je enkel nog (redelijk werkbare) RML-tags over. Dan moet je nog even kijken naar de attributen die anders werken.

Hier kan je zien welke tags er zijn, en hoe die tags werken: Overzicht van UBB-codes
Dan kan je zelf een converter bouwen in welke programmeertaal hij het maar fijn vind.

Wil je van te voren nog even droog oefenen? Gebruik dan het kladblok: https://gathering.tweakers.net/forum/notepad

[ Voor 7% gewijzigd door AW_Bos op 05-05-2024 01:56 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • marktweakt
  • Registratie: December 2010
  • Laatst online: 01-10 16:19
Ja ik heb nu een sed scriptje gemaakt waarmee ik de basis van de conversie kan doen.

Maar er zijn zoveel HTML tags en varianten dat een nabewerking bijna altijd nog nodig is.

Dit is het scriptje wat ik nu gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sed "
s/<table.*>/<table border=\"1\" bordercolor=\"black\">/
s/<span.*rem\">//g
s/<\/span>//g
s/<tbody>//g
s/<\/tbody>//g
s/<p>//g
s/<\/p>//g
s/<em>//g
s/<\/em>//g
s/strong/b/g
s/<br \/>//g
s/</[/g
s/>/]/g" $1

[ Voor 44% gewijzigd door marktweakt op 05-05-2024 10:03 ]


Acties:
  • 0 Henk 'm!

  • aawe mwan
  • Registratie: December 2002
  • Laatst online: 01-10 20:51

aawe mwan

Wat ook leuk is:

marktweakt schreef op zondag 5 mei 2024 @ 10:00:
Ja ik heb nu een sed scriptje gemaakt waarmee ik de basis van de conversie kan doen.

Maar er zijn zoveel HTML tags en varianten dat een nabewerking bijna altijd nog nodig is.
Als je HTML van een website plukt, is de kans groot dat het eigenlijk niet eens geldige HTML is wat ze gebruiken. Je kunt de code oppoetsen met bijvoorbeeld hxnormalize -l 1024 -x . Daarna zou je hem verder kunnen verwerken met tools die het kunnen omzetten naar XML, json en dergelijke.

Maar bij het gegeven voorbeeld lijkt me een sed script heel erg geschikt. Ik heb jouw sed script wat aangepast en de HTML die je hierboven gepost hebt heb ik er door gehaald:

Sed: marktweakt.sed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sed -Ef

# samenvoegen met de volgende regel, als de regel eindigt op een td tag
/<td[^>]*>$/{ N; s_\n__ }

# table krijgt andere parameters
s_<table[^>]*>_[table border="1" bordercolor="black"]_
s_</table>_[/table]_

# tabelrijen en tabelcellen
s_<tr>_[tr]_g
s_</tr>_[/tr]_g
s_<td[^>]*>_[td]_g
s_</td>_[/td]_g

# Tekst in <strong> omzetten naar tekst in [b]
s_<strong>([^<]*)</strong>_[b]\1[/b]_g

# alle andere HTML tags verwijderen, maar tekst ertussen laten staan
# (span, tbody, p, em, br)
s_</?[^>]*>__g

sed script draaien en het resultaat op het clipboard zetten:
./marktweakt.sed <marktweakt.html | xclip -i

Dan is dit de "paste" van het resultaat zonder verder handmatige nabewerking:

Maatregelen volgens Overstappen.nl
Energiebedrijf
Geen enkele maatregel
Clean Energy
Next Energy
Tibber
Vaste terugleverkosten zonnepaneelbezitters
BudgetEnergie
Gewoon Energie
Innova
MEGA
OM (Samen Om)
Vandebron
Vrijopnaam
Geen meerjarig contract voor zonnepaneelbezitters
DELTA
Energiedirect.nl
Essent
Powerpeers
Geen aanbod bij nettoteruglevering (meer opwek dan verbruik)
Coolblue Energie
Eneco
ENGIE
Oxxio
Pure Energie
United Consumers
Geen korting voor klanten met zonnepanelen, of een ongunstiger aanbod
Frank Energie
Greenchoice
Vattenfall

„Ik kan ook ICT, want heel moeilijk is dit niet”


Acties:
  • 0 Henk 'm!

  • marktweakt
  • Registratie: December 2010
  • Laatst online: 01-10 16:19
@aawe mwan Dank voor het verbeterde sed scriptje. Werkt prima met de tabel uit het voorbeeld!
Pagina: 1