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!

LotharRappsilber

#15
stimmt!, aber vielleicht kannst Du mir bei einem anderen Problem helfen,

Ich bekomme die Kurse und prozentualen Veränderungen von finanznachrichten.de, aber der hat den Fonds nicht, deshalb zu Boere.de, der den Fonds hat. Obwohl ich nach den richtigen Strings suche, geht es leider nicht.

define Aktie_BlackRock HTTPMOD https://www.boerse.de/fonds/BGF-European-Special-Situations-A2-USD/LU0171276677 300
setuuid Aktie_BlackRock 6540f771-f33f-9284-31e3-f05c49908982604b
attr Aktie_BlackRock alias BlackRock
attr Aktie_BlackRock reading01Name Kurs
attr Aktie_BlackRock reading01OExpr $val =~ s/\,/./g;; $val ## Umwandlung des Dezimalkommas in Dezimalpunkt
attr Aktie_BlackRock reading01Regex content="(\d+\.\d+)"
attr Aktie_BlackRock reading02Name Prozent
attr Aktie_BlackRock reading02OExpr $val =~ s/\,/./g;; $val ## Umwandlung des Dezimalkommas in Dezimalpunkt
attr Aktie_BlackRock reading02Regex data-sign="%">([+\-,\d+\,\d+]+)
attr Aktie_BlackRock room Boerse
attr Aktie_BlackRock stateFormat Kurs, Prozent
attr Aktie_BlackRock timeout 5
attr Aktie_BlackRock userReadings holeInOne {ReadingsVal($NAME,"Kurs","")." ".ReadingsVal($NAME,"Prozent","")}
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

krikan

Finance::Quote konnte ich unter älteren 64-Bit strawberry-Perl-Versionen (5.28/5.30) ebenfalls nicht installieren.
Mit https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_53822_64bit/strawberry-perl-5.38.2.2-64bit-portable.zip funktioniert es hingegen. Auch die Module lassen sich definieren/laden.

Lothar, kannst Du bitte nachschauen, ob eine Datei "portableshell.bat" im FHEM-Ordner existiert?
Falls ja, doppelklicke die Datei und probiere in der sich öffenden Eingabeaufforderung nochmals Finance::Quote zu installieren.

Gruß, Christian

LotharRappsilber

#17
Hallo Krikan,

existiert nicht, soll ich die portable.zip neu installieren?

Ich glaube kopieren reicht!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

betateilchen

Zitat von: LotharRappsilber am 19 April 2024, 14:51:23deshalb zu Boerse.de, der den Fonds hat. Obwohl ich nach den richtigen Strings suche, geht es leider nicht.

Schau Dir halt mal den html-body an, der in HTTPMOD ankommt, dann wirst Du sehen, dass das grundsätzlich nicht funktioniert, weil der Aufruf der URL außerhalb eines Browser verboten ist.

<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

krikan

Wenn Du eine vollständige Datensicherung hast, kannst Du gerne probieren eine neue Perl-Version zu installieren. Insbesondere wenn die Version sehr alt ist; was ich vermute.
Da ich die genaue Ausgangssituation Deiner derzeitigen Installation nicht kenne, kann Dein FHEM schlimmstenfalls nachher gar nicht mehr funktionieren. Darum Datensicherung!

LotharRappsilber

#20
Hallo Kirkan,

hab Dienst beendet, installiert, neu gestartet. Danach ging fhem nicht mehr, musste Sicherung zurück holen. Trotzdem danke für Deine  Mühe.
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

TomLee

#21
Das hier ist ein Raw-List:
(München, hattest oben auch versucht auszulesen)
defmod Aktie_BlackRock HTTPMOD https://markets.traderfox.com/fonds/15135580-blackrock-global-funds-sicav-european-special-situations-classe-a-2-usd/ 600
attr Aktie_BlackRock event-on-change-reading quote
attr Aktie_BlackRock reading01Name quote
attr Aktie_BlackRock reading01OExpr $val =~ s/\,/./g;; $val ## Umwandlung des Dezimalkommas in Dezimalpunkt
attr Aktie_BlackRock reading01Regex (\d+,\d+)&euro;;.*<\/span>
attr Aktie_BlackRock webCmd reread

setstate Aktie_BlackRock 2024-04-19 17:29:11 quote 64.797

Erreicht man in jedem Device in FHEM unten über den Link Raw Definition.
list -r <devicename> aus der Kommandozeile liefert das gleiche, einziger Unterschied das hier die Ausgabe mit define erfolgt.

Das beste daran, man kann die Definition direkt so übernehmen. Einfach unten den Raw-Editor öffnen, das was drin steht löschen, die Definition reinpasten und execute commands betätigen.

Warum machst Dir das immer so umständlich Auszüge aus der fhem.cfg zu zeigen ?


LotharRappsilber

Danke TomLee für Deine Mühe!!!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

LotharRappsilber

Hallo betateilchen,

hab ich verstanden, allerdings hab ich "Forbidden" nicht gefunden im Quelltext.
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL