PeterPawn
IPPF-Urgestein
- Mitglied seit
- 10 Mai 2006
- Beiträge
- 15,341
- Punkte für Reaktionen
- 1,777
- Punkte
- 113
Solange das funktioniert, ist ja alles schön ... wenn das jemand nachbauen will, würde ich demjenigen meinerseits trotzdem raten, daß er sich eher die (strukturierten) Daten aus der JSON-Datei greift anstatt die Angaben aus irgendwelchem HTML-Quelltext "zu kratzen".
So, wie das hier jetzt gelöst ist, reicht es schon aus, wenn einfach die Tabellendaten nicht mehr mit irgendwelchen Zeilenumbrüchen mitten in der (Tabellen-)Zeile ausgegeben werden (das abschließende "</td></tr></table>" steht auch alles direkt nach der letzten Tabellenzeile und die jeweiligen Tabellenzeilen (tr) fangen ohnehin nicht am Zeilenanfang an), das ändert an der Darstellung der Seite gar nichts (diese Zeilenenden sind sogar reiner Ballast im HTML an dieser Stelle), aber das "scraping" oben würde klaglos den Wert für "Heute" finden (shortest match from front and longest match from back will get deleted) und nicht einmal einen ordentlichen Fehler werfen.
Der Vorteil von strukturierten Daten wäre es, daß man eigentlich kaum einen falschen Eintrag für den richtigen halten könnte und an der Logik oben ändert sich (außer beim "mapfile") praktisch auch nichts wirklich, nur anstelle von GET müßte man POST nehmen beim "curl" und eine andere Seite (mit entsprechende Parametern beim POST) aufrufen. Für das Parsen von JSON in Shell-Code gibt es fertige Lösungen (als Binärcode und damit auch schnell) ... und selbst wenn man die nicht will, sollte es dort - eben wegen der "Strukturierung", die ja auch definierte Trennzeichen zwischen Daten beinhaltet - ohne weiteres möglich sein, das deutlich weniger anfällig für geänderten Text rundherum zu gestalten (das ginge oben sicherlich auch noch besser).
Also: Solange es nur einfach funktionieren soll ... alles gut. Ändert AVM nur minimal an der Lua-Datei und macht aus der Form
(ohnehin ungewöhnlich und unübersichtlich, weil man erst mal "Klammern zählen" muß, um das Ende des Statements zu finden) dann diese
, liefert das Auslesen prompt falsche Werte. Merkt man das, kann man es korrigieren ... richtig blöd wird es erst dann, wenn man es (Fehler treten ja trotzdem nicht auf) gar nicht mitbekommt und sich trotzdem bei irgendwelchen (automatischen) Entscheidungen dann auf den falschen Wert stützt.
So, wie das hier jetzt gelöst ist, reicht es schon aus, wenn einfach die Tabellendaten nicht mehr mit irgendwelchen Zeilenumbrüchen mitten in der (Tabellen-)Zeile ausgegeben werden (das abschließende "</td></tr></table>" steht auch alles direkt nach der letzten Tabellenzeile und die jeweiligen Tabellenzeilen (tr) fangen ohnehin nicht am Zeilenanfang an), das ändert an der Darstellung der Seite gar nichts (diese Zeilenenden sind sogar reiner Ballast im HTML an dieser Stelle), aber das "scraping" oben würde klaglos den Wert für "Heute" finden (shortest match from front and longest match from back will get deleted) und nicht einmal einen ordentlichen Fehler werfen.
Der Vorteil von strukturierten Daten wäre es, daß man eigentlich kaum einen falschen Eintrag für den richtigen halten könnte und an der Logik oben ändert sich (außer beim "mapfile") praktisch auch nichts wirklich, nur anstelle von GET müßte man POST nehmen beim "curl" und eine andere Seite (mit entsprechende Parametern beim POST) aufrufen. Für das Parsen von JSON in Shell-Code gibt es fertige Lösungen (als Binärcode und damit auch schnell) ... und selbst wenn man die nicht will, sollte es dort - eben wegen der "Strukturierung", die ja auch definierte Trennzeichen zwischen Daten beinhaltet - ohne weiteres möglich sein, das deutlich weniger anfällig für geänderten Text rundherum zu gestalten (das ginge oben sicherlich auch noch besser).
Also: Solange es nur einfach funktionieren soll ... alles gut. Ändert AVM nur minimal an der Lua-Datei und macht aus der Form
Code:
str = str .. [[
<td datalabel="" class="first_col">]]
.. box.tohtml(txt[request] or "")
.. [[
</td>
]]
Code:
str = str .. [[ <td datalabel="" class="first_col">]] .. box.tohtml(txt[request] or "") .. [[ </td> ]]