Hauptmenü

Parsen

Begonnen von LotharRappsilber, 30 Oktober 2023, 14:51:39

Vorheriges Thema - Nächstes Thema

LotharRappsilber

Hallo zusammen,
ich möchte von www.boerse.de einige Aktienkurse holen, aber mir gelingt dies nicht. Folgender Quellcode, aus dem ich es herausholen möchte.

                                    <div class="name nameGross"  itemprop="name" >
                                        Adidas Aktie
                                    </div>                           

<td>aktueller&nbsp;Kurs:</td>
                            <td class="alignright">
                                <div class="nobr marginlessHeadline">
                                    <span class="BW_PUSH">
                                        <span class="" data-push-agse="291@16"
                                            data-push-attribute="last" data-format-option="2"
                                            data-sign=" EUR" >
                                            166,98  EUR</span></span>
                                </div>
                            </td>
                        </tr>
                        <tr>
                            <td>Veränderung:</td>
                            <td class="alignright">
                                <div class="nobr marginlessHeadline">
                                    <span class="BW_PUSH">
                                        <span class="" data-push-agse="291@16"
                                            data-push-attribute="perfInstAbs" data-format-option="2"
                                            data-sign=" EUR" >
                                            1,35  EUR</span>
                                    </span>
                                </div>
                            </td>
                        </tr>
                        <tr>
                            <td>Veränderung&nbsp;in&nbsp;%:</td>
                            <td class="alignright">
                                <div class="nobr marginlessHeadline">
                                    <span class="BW_PUSH">
                                        <span class="" data-push-agse="291@16"
                                            data-push-attribute="perfInstRel" data-sign=" %">0,82 %</span>

Mein Code sieht so aus:
define Aktie_Adidas HTTPMOD https://www.boerse.de/aktien/Adidas-Aktie/DE000A1EWWW0 300
attr Aktie_Adidas enableControlSet 1
attr Aktie_Adidas reading01Name Adidas Aktie
attr Aktie_Adidas reading01Regex itemprop="name" >Adidas Aktie<[\S\s\r\n]*?"data-push-attribute="last" data-format-option="2"data-sign=" EUR" >data-sign=" EUR" >\d+">(\d.\d{2}<[\S\s\r\n])
attr Aktie_Adidas reading02Name Prozentual
attr Aktie_Adidas reading02Regex ="perfInstRel" data-sign=" %">.*?(([01]?\d|2[0-3]):([0-5]?\d))

Bitte um Hilfe!

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

TomLee

reading01Regex nutz ich schon länger so:

attr Aktie_Adidas reading01Regex content="(\d+\.\d+)"
reading02Regex reim ich mir so zusammen:

attr Aktie_Adidas reading02Regex .*data-sign="">(\d+\,\d+)<?<\/span>&nbsp;<span class="cur">%<\/span><\/span>

LotharRappsilber

Bei

attr Aktie_Adidas reading02Regex .*data-sign="">(\d+\,\d+)<?<\/span>&nbsp;<span class="cur">%<\/span><\/span>

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

LotharRappsilber

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

TomLee

#4
Das Beispiel ist zwar ungetestet und zusammenkopiert gewesen, aber nachdem ich es jetzt mal ausprobiert habe, klappt das bei mir einwandfrei.

Etwas kürzer:
attr hmod_sq_adidas reading02Regex .*data-sign="">(\d+\,\d+).*?%<\/span>
Was ist wenn du den regexp einfach im Attribut einträgst, statt mit attr ?

LotharRappsilber

klappt wunderbar. Danke!!!!

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

LotharRappsilber

war leider verfrüht.

reading02 wird nur einmal gelesen und dann nicht wieder.
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

TomLee

Stimmt, sehe aber noch nicht woran es liegt.



Wenn du den Thread in den richtigen Forenbereich verschiebst, lesen und sind vlt. mehr User bereit sich überhaupt hier zu beteiligen.

LotharRappsilber

Such Du bitte weiter!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

TomLee

Der Grund bei mir war der, das ich reading02Regex/Name nachträglich ergänzt hatte und event-on-change-reading nicht entsprechend um das reading ergänzt habe.

Bei mir klappt das dann doch einwandfrei:
defmod hmod_sq_adidas HTTPMOD https://www.boerse.de/aktien/Adidas-Aktie/DE000A1EWWW0 600
attr hmod_sq_adidas alias Adidas
attr hmod_sq_adidas event-on-change-reading quote,win,prozentual
attr hmod_sq_adidas reading01Name quote
attr hmod_sq_adidas reading01OExpr $val =~ s/\,/./g;; $val ## Umwandlung des Dezimalkommas in Dezimalpunkt
attr hmod_sq_adidas reading01Regex content="(\d+\.\d+)"
attr hmod_sq_adidas reading02Name prozentual
attr hmod_sq_adidas reading02Regex .*data-sign="">(\d+\,\d+).*?%<\/span>
attr hmod_sq_adidas room Boerse->Aktien
attr hmod_sq_adidas set01Local 1
attr hmod_sq_adidas set01Name number
attr hmod_sq_adidas set02Local 1
attr hmod_sq_adidas set02Name purchase
attr hmod_sq_adidas stateFormat <div style="text-align:left">Anzahl: number<br>Kaufpreis: purchase<br>Kurs: quote (percent %)<br>Gewinn: win</div>
attr hmod_sq_adidas timestamp-on-change-reading quote
attr hmod_sq_adidas userReadings win:quote:.* {usrquote($name,ReadingsNum($name,'number','0'),ReadingsNum($name,'purchase','0'))},\
percent:quote.* {usrpercent($name,ReadingsNum($name,'number','0'),ReadingsNum($name,'purchase','0'))}
attr hmod_sq_adidas verbose 5
attr hmod_sq_adidas webCmd reread

setstate hmod_sq_adidas <div style="text-align:left">Anzahl: number<br>Kaufpreis: purchase<br>Kurs: 166.72 (0.00 %)<br>Gewinn: 0.00</div>
setstate hmod_sq_adidas 2023-10-30 16:38:42 percent 0.00
setstate hmod_sq_adidas 2023-10-30 16:38:42 prozentual 0,66
setstate hmod_sq_adidas 2023-10-30 16:38:42 quote 166.72
setstate hmod_sq_adidas 2023-10-30 16:38:42 win 0.00

LotharRappsilber

Danke nochmals für diene kompetente Hilfe. Den Quellcode muss ich erst mal verstehen!!!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

LotharRappsilber

Funktioniert, aber negative Werte werden nicht geloggt.

data-sign="">-0,51</span>&nbsp;<span class="cur">%</span></span>

sonst geht alles!

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

TomLee


LotharRappsilber

hat geklappt. Danke nochmal!!!
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL

LotharRappsilber

Kannst Du mir bitte noch mal helfen. Ich möchte die Ausgabe formatieren. Hab dazu folgendes erstellt, aber es funktioniert leider nicht.

define Kurse readingsGroup .*:Aktie
attr Kurse alias Kurse

Alle Kurse fangen mit "Aktie_" an.
FB 7590, FHEM, 1xCCU2, 6xDECT200, 1xDECT201, 1xHMIP-SWO-PL, 1xHMIP-PS, 1xDECT301,  2xHM-LC-Sw1-PL