Hauptmenü

Parsen

Begonnen von LotharRappsilber, 18 April 2024, 15:51:06

Vorheriges Thema - Nächstes Thema

LotharRappsilber

Hallo zusammen,

ich arbeite unter windows. Da ich trotz "cpan install Finance::Quote" Shares und ShareMaster nicht nutzen kann, versuche ich die Kurse auf andere Weise zu holen. Das gelingt mir auch größtenteils. Nur Kurse von einigen Aktien sind nicht da, obwohl die Prozentualen Veränderungen angezeigt werden und der Code zum Parsen richtig ist. Hat jemand eine Idee? Mein Code:

define Aktie_Linde HTTPMOD https://www.finanznachrichten.de/nachrichten-aktien/linde-plc.htm 300
setuuid Aktie_Linde 6540efd0-f33f-9284-a3b6-48716b86fe5d0b1e
attr Aktie_Linde alias Linde
attr Aktie_Linde reading01Name Kurs
attr Aktie_Linde reading01OExpr $val =~ s/\,/./g;; $val ## Umwandlung des Dezimalkommas in Dezimalpunkt
attr Aktie_Linde reading01Regex aktie-gleich">(\d+\.\d+)"
attr Aktie_Linde reading02Name Prozent
attr Aktie_Linde reading02OExpr $val =~ s/\,/./g;; "$val %"
attr Aktie_Linde reading02Regex data-field="RelDiff">([+\-,\d+\,\d+]+)
attr Aktie_Linde room Boerse
attr Aktie_Linde stateFormat Kurs, Prozent
attr Aktie_Linde timeout 5
attr Aktie_Linde userReadings holeInOne {ReadingsVal($NAME,"Kurs","")." ".ReadingsVal($NAME,"Prozent","")}
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

#1
ZitatAktienkurse
Zitatregex
ZitatParsen

Es nervt langsam, kannst Du Dir nichtmal die Mühe machen, SINNVOLLE Thread-Titel zu verwenden?

Ich finde Deine Ignoranz diesbezüglich inzwischen ziemlich übel.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Ich weis es nicht besser. Ist Parsen nicht aussagekräftig genug? Was wäre sinnvoll?
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

TomLee

Hallo,

aktie-gleich">(\d+\.\d+)"
du hast den Punkt maskiert, darum matcht nur Punkt und kein beliebiges Zeichen und hinten die Hochkomma gibts in dem Quelltext nicht.

Thomas

LotharRappsilber

#4
Hab das jetzt so geändert.

reading01Regex data-field="Bild">(\d+\.\d+)"</span>

Geht trotzdem nicht!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Zitat von: LotharRappsilber am 18 April 2024, 16:16:40Ich weis es nicht besser. Ist Parsen nicht aussagekräftig genug? Was wäre sinnvoll?

Lesen...

https://forum.fhem.de/index.php?msg=105687



Mit der richtigen regex funktioniert es einwandfrei.

defmod linde HTTPMOD https://www.finanznachrichten.de/nachrichten-aktien/linde-plc.htm
attr linde reading01Regex data-field="Rate">([\d,]+)

setstate linde 2024-04-18 16:45:29 reading01 422,80
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

data-field="Bid">(\d+\.\d+)"</span>
auch das gibts nicht im Quelltext data-field="Bid">WERT
kommt zweimal im Quelltext vor, beide mal gefolgt von </td><td ... und Komma als Dezimaltrenner. Gefolgt von "</span> seh ich nicht ?

Wie wärs mit:

data-field="Rate">(\d+\,\d+)

betateilchen

Zitat von: TomLee am 18 April 2024, 16:57:17Wie wärs mit:

data-field="Rate">

das hab ich doch auch schon vorgeschlagen...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Danke TomLee!!! Hat funktioniert!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

TomLee

Ähm, nur so das man mal darüber gequatscht hat. Mein gezeigter regulärer Ausdruck passt auch (das Komma muss net unbedingt maskiert werden), aufgeschrieben hab ich mir jetzt auf jedenfall fürs nächste Mal die Variante die Betateilchen vorgeschlagen hat.

Prof. Dr. Peter Henning

Zitat von: LotharRappsilber am 18 April 2024, 15:51:06Da ich trotz "cpan install Finance::Quote" Shares und ShareMaster nicht nutzen kann

Leider fehlt es dem TE an grundlegendem Verständnis dessen, was er eigentlich tut, und inzwischen sind schon mehrere ansonsten durchaus hilfsbereite User dabei, die Geduld zu verlieren. Also machen wir doch mal einen Bildungsplan:

Ich schlage vor, sich als erstes einmal anzueignen, was das CPAN eigentlich ist und wie man den Befehl cpan aufruft. Und dann cpan Finance::Quote aufzurufen und das ENDERGEBNIS (nicht die ungefähr 10.000 Zeilen bis dahin) zu posten.

Zweitens: Wo legt das so genannte Betriebssystem Windows die Perl-Module ab, die mit cpan installiert werden? Ist das der Ort, an dem die FHEM-Installation die Module sucht?

Drittens: Was sind Reguläre Ausdrücke eigentlich? https://www.inf-schule.de/automaten-sprachen/sprachenundautomaten/sprachbeschreibung/regulaereausdruecke/exkurs_regulaereausdruecke

Viertens: Seine Regulären Ausdrücke unter https://regex101.com/ selbst zu testen.

LG

pah

LotharRappsilber

Hier das Ergebnis:

Test Summary Report
-------------------
t\20_policy_require_tidy_code.t            (Wstat: 1280 Tests: 6 Failed: 5)
  Failed tests:  2-6
  Non-zero exit status: 5
Files=40, Tests=5388, 185 wallclock secs ( 0.81 usr +  0.08 sys =  0.89 CPU)
Result: FAIL
Failed 1/40 test programs. 5/5388 subtests failed.
  PETDANCE/Perl-Critic-1.152.tar.gz
  C:\fhem-6.0\perl\bin\perl.exe ./Build test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports PETDANCE/Perl-Critic-1.152.tar.gz
Stopping: 'install' failed for 'Perl::Critic'.

Die fhem-Installation liegt da. Siehe Grafik. Drittens und Viertens verstehe ich leider nicht. Hatte einen Schlaganfall und bin schon über 70.


FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Grundsätzlich glaube ich nicht, dass der FHEM Ordner der richtige Ort ist, um darin auch perl zu installieren.

Und

ZitatStopping: 'install' failed

deutet doch schon darauf hin, dass die versuchte Installation nicht funktioniert hat.

Zitat von: LotharRappsilber am 19 April 2024, 13:28:28Hatte einen Schlaganfall und bin schon über 70.

Ein Schlaganfall ist schlimm und das tut mir leid für Dich.
Aber das kann auch nicht als Entschuldigung für alles herhalten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

LotharRappsilber

Wird aber so beschrieben im wiki!

Grundinstallation
Installation FHEM
Das aktuelle fhem-X.Y.zip Paket (momentan fhem-6.0.zip) herunterladen.

Einen neuen Ordner für FHEM anlegen. Für diesen Artikel wurde der Ordner f:\my-fhem angelegt.

Den gesamten Inhalt des Ordners fhem-6.0\fhem-6.0 aus dem .zip-Paket nach f:\my-fhem entpacken.

Zur Kontrolle: In f:\my-fhem befindet sich anschließend unter anderem die Datei fhem.pl.

Installation Perl
Eine aktuelle Strawberry Perl Portable Edition herunterladen und im Ordner von FHEM entpacken.

Hier wurde der Inhalt des Pakets "strawberry-perl-5.24.1.1-32bit-portable.zip" nach f:\my-fhem entpackt.

Zur Kontrolle: In f:\my-fhem existiert anschließend unter anderem ein zusätzlicher Ordner perl.
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Ok. Das finde ich zwar eher ungewöhnlich, aber deshalb hatte ich ja geschrieben "ich glaube nicht..." Da ich seit Ewigkeiten nicht mehr mit Windows arbeite, wusste ich tatsächlich nicht, ob das so sein soll.

Fakt ist aber, dass Deine Nachinstallation von Finance::Quote nicht funktioniert hat (siehe Fehlermeldung in dem von Dir zitierten Ergebnis). Deshalb kannst Du im Moment auch nicht davon ausgehen, dass Finance::Quote tatsächlich auf Deinem System vorhanden ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!