NEWS
Adapter Parser - zu blöd zum RegExp finden
-
Hallo und guten Morgen Leute,
ich bin einfach zu blöd zum finden des richtigen RegExp zum Auslesen der Temperaturen.
Folgende XML-Datei beinhaltet die Werte die ich nutzen möchte:
This XML file does not appear to have any style information associated with it. The document tree is shown below. <data> <sensor102> <name>Lüftung Abluft</name> <value_float>20.81</value_float> <value_int>2080</value_int> <value_string>20.81</value_string> <min_abs_float>8.62</min_abs_float> <max_abs_float>42.25</max_abs_float> <min_day_float>18.43</min_day_float> <max_day_float>21.31</max_day_float> <unit>°C</unit> <value_display>20.81 °C</value_display> </sensor102> <sensor103> <name>Lüftung Zuluft</name> <value_float>19.18</value_float> <value_int>1918</value_int> <value_string>19.18</value_string> <min_abs_float>5.31</min_abs_float> <max_abs_float>40.87</max_abs_float> <min_day_float>16.81</min_day_float> <max_day_float>19.68</max_day_float> <unit>°C</unit> <value_display>19.18 °C</value_display> </sensor103> <sensor104> <name>Lüftung Fortluft</name> <value_float>17.87</value_float> <value_int>1787</value_int> <value_string>17.87</value_string> <min_abs_float>5.93</min_abs_float> <max_abs_float>42.18</max_abs_float> <min_day_float>15.06</min_day_float> <max_day_float>18.50</max_day_float> <unit>°C</unit> <value_display>17.87 °C</value_display> </sensor104> <sensor105> <name>Lüftung Aussenluft</name> <value_float>16.62</value_float> <value_int>1662</value_int> <value_string>16.62</value_string> <min_abs_float>2.81</min_abs_float> <max_abs_float>43.06</max_abs_float> <min_day_float>13.25</min_day_float> <max_day_float>17.31</max_day_float> <unit>°C</unit> <value_display>16.62 °C</value_display> </sensor105> <sensor106> <name>Temp. Carport</name> <value_float>11.63</value_float> <value_int>1163</value_int> <value_string>11.63</value_string> <min_abs_float>3.64</min_abs_float> <max_abs_float>39.54</max_abs_float> <min_day_float>7.65</min_day_float> <max_day_float>15.27</max_day_float> <unit>°C</unit> <value_display>11.63 °C</value_display> </sensor106> <sensor107> <name>Feucht. rechte Ecke</name> <value_float>71.61</value_float> <value_int>7161</value_int> <value_string>71.61</value_string> <min_abs_float>25.86</min_abs_float> <max_abs_float>83.41</max_abs_float> <min_day_float>65.81</min_day_float> <max_day_float>78.42</max_day_float> <unit>%</unit> <value_display>71.61 %</value_display> </sensor107> <sensor108> <name>Anschluß 6</name> <value_float>1080.73</value_float> <value_int>108072</value_int> <value_string>1080.73</value_string> <min_abs_float>1035.59</min_abs_float> <max_abs_float>1108.52</max_abs_float> <min_day_float>1076.32</min_day_float> <max_day_float>1082.00</max_day_float> <unit>hPa</unit> <value_display>1080.73 hPa</value_display> </sensor108> <sensor109> <name>Dachboden Temp. Lueftung</name> <value_float>17.17</value_float> <value_int>1717</value_int> <value_string>17.17</value_string> <min_abs_float>6.81</min_abs_float> <max_abs_float>43.89</max_abs_float> <min_day_float>13.84</min_day_float> <max_day_float>17.93</max_day_float> <unit>°C</unit> <value_display>17.17 °C</value_display> </sensor109> <sensor110> <name>Feucht. linke Ecke</name> <value_float>56.04</value_float> <value_int>5604</value_int> <value_string>56.04</value_string> <min_abs_float>22.30</min_abs_float> <max_abs_float>69.93</max_abs_float> <min_day_float>54.38</min_day_float> <max_day_float>61.08</max_day_float> <unit>%</unit> <value_display>56.04 %</value_display> </sensor110> <sensor111> <name>Anschluß 7</name> <value_float>1079.16</value_float> <value_int>107916</value_int> <value_string>1079.16</value_string> <min_abs_float>1036.22</min_abs_float> <max_abs_float>1108.20</max_abs_float> <min_day_float>1075.68</min_day_float> <max_day_float>1080.10</max_day_float> <unit>hPa</unit> <value_display>1079.16 hPa</value_display> </sensor111> <sensor117> <name>Zuluft Dachboden</name> <value_float>14.21</value_float> <value_int>1421</value_int> <value_string>14.21</value_string> <min_abs_float>0.48</min_abs_float> <max_abs_float>43.82</max_abs_float> <min_day_float>9.74</min_day_float> <max_day_float>16.25</max_day_float> <unit>°C</unit> <value_display>14.21 °C</value_display> </sensor117> <system> <date>13.10.2020</date> <time>21:48:05</time> <devicename>ALL4500</devicename> <devicetype>ALL4500</devicetype> <sys>4448319</sys> </system> </data>
Mein Wunsch ist zum Beispiel der Temperaturwert "20.81" in Zeile 5 des Codes.
Da aber alle Temperaturen gleich aufgebaut sind (<value_float>WERT</value_float>) bekomme ich das nicht hin.
Kann mir jemand helfen? Das wäre super nett. Danke.Gruß
PlanLos -
@PlanLos
at>([\d\.]+)
und Nummer auf 0 stellen -
@Homoran Sauber, vielen Dank für die ultra schnelle Hilfe. Läuft! DANKE!!!
-
Hallo,
Da der Titel diese Beitrags für mich auch sehr gut passt schreibe ich mein Problem mal hier rein.Ich versuche aus folgender Web Seite den Preis für den Silber Philharmoniker zu bekommen.
https://goldvorsorge.at/2428-0-Silbermuenzen-Differenzbesteuert-kaufen-.html
Wenn ich das auf der regex101 Seite wie folgt eingebe funktioniert es dort auch.
Phi.+', '([\d.]+)
Aber im Parser Adapter bekomme ich leider immer einen falschen Wert.Kann mir jemand sagen was ich da falsch mache?
Danke schon mal für eure Hilfe!
Gerald -
@gerald123 sagte in Adapter Parser - zu blöd zum RegExp finden:
Aber im Parser Adapter bekomme ich leider immer einen falschen Wert.
welchen denn?
Wie sieht dein Parser-Editor-Fenster aus?
-
@Homoran Ich bekomme immer 119 ausgegeben.
-
@gerald123 und jetz bitte den Inhalt des Editors! (das ist der Bleistift)
-
@Homoran Hier wird jetzt kein Ergebnis angezeigt?
Im Objekt bekomme ich aber die 119, wo kommen die den her?
-
@gerald123 sagte in Adapter Parser - zu blöd zum RegExp finden:
Hier wird jetzt kein Ergebnis angezeigt?
mal auf den "Play"-Button geklickt?
...und alle 5 Sekunden ist wohl etwas heftig.
Nicht dass du gesperrt bist?wie oft brauchst du den Wert?
-
@Homoran Den Button habe ich betätigt, da kommt aber nichts.
Wenn ich folgende Abfrage eingebe bekomme ich den Wert (geht aber nur solange sich die Lieferzeit auf der Seite nicht ändert).
1 Unze Silber Philharmoniker (Dif) (\d* Tage)', '([\d.]+)Du hat recht, die 5sec. sind zu oft. Damit habe ich mich noch nicht beschäftigt, muss ich noch länger stellen.
-
@gerald123 kann ich nachvollziehen, finde aber in dem Langen Quelltext die Fundstelle für die 119 nicht
Melde mich! -
@gerald123
Hat was gedauert, da ich das System noch nicht ganz herausbekommen habe wo die 119 herkommt, aberiker .{19}([\d\.]+)
klappt -
@Homoran Hab da noch eine Frage dazu, was bedeutet {19}, sind das die Anzahl der Zeichen bis zum Wert?
Falls das so ist dann geht das nur solange eine Lieferzeit eingetragen ist, wenn sie es Lagernd haben löschen sie die (10Tage) komplett weg. -
@gerald123 sagte in Adapter Parser - zu blöd zum RegExp finden:
was bedeutet {19}, sind das die Anzahl der Zeichen bis zum Wert?
Ja!
@gerald123 sagte in Adapter Parser - zu blöd zum RegExp finden:
wenn sie es Lagernd haben löschen sie die (10Tage) komplett weg
dann muss ich nochmal ran
-
@gerald123 ich bekomme es auch nicht hin - keine Ahnung wo er die 119,00 zieht
-
@Homoran schade, trotzdem danke für deine Bemühungen
-
@gerald123 Ich habe es zwar auf verschiedene Weise geschafft, aber allgemein kommt bei mir immer 119.00 oder 86,00 raus.
Ich fürchte das ist halbwegs gewollt, da Hochkommata und Klammern auch Bestandteile eines regEx sein können -
@gerald123 sagte in Adapter Parser - zu blöd zum RegExp finden:
@Homoran schade, trotzdem danke für deine Bemühungen
Es hat mir keine Ruhe gelassen
<b>� ([\d,]+)<\/b>
klappt, allerdings auf dieser Seite: https://goldvorsorge.at/2876-0-Wiener-Philharmoniker-Silbermuenzen-kaufen.htmlTyp = Zahl mit Komma!!!
und Num = 0 -
@Homoran Super, so funktioniert es.
Was die einzelnen Abfragen bedeuten verstehe ich zwar nicht aber wenn das Ergebnis passt ist es für mich schon O.k.
Danke! -
@gerald123 sagte in Adapter Parser - zu blöd zum RegExp finden:
Was die einzelnen Abfragen bedeuten verstehe ich zwar nicht
dann ändern wir das:
der notwendige Quelltext heisst:<b>Lagernd.</b> Abholung oder Versand 10 Tage nach Zahlungseingang.</p></div><div style="float:left; padding-right:5px; white-space: nowrap; padding-left:0; margin-top:7px;"><b>€ 27,60</b> ab 1 Stück,</div> <div style="float:left; margin-top:7px;"></div><br style="clear:left;" /><div style="float:left; padding-right:5px; white-space: nowrap; padding-left:0; margin-top:7px;"><b> € 27,40</b> ab 20 Stück in Original-Tube, </div><br style="clear:left;" /><div style="float:left; padding-right:5px; white-space: nowrap; padding-left:0; margin-top:7px;"><b> € 27,30</b> ab 500 Stück in Masterbox. Inkl. Differenzsteuer</div> <br style="clear:left;" /> <br /> <div style="float:left; width:52px; line-height:20px;"><b>Menge</b></div>
Davon wollen wir den Preis für 1 Stück = € 27,60 aus Zeile 1
Leider kommt im Parser-Adapter das €-Zeichen nicht korrekt rüber, daher nehmen wir
<b>�
= Fettdruck - Platzhalter für das Euro-Zeichendann kommt der Wert selbst als Gruppe für das Ergebnis
([\d,]+)
Die Klammern erzeugen die Gruppe, die aus mehreren \d Ziffern und , Komma besteht (diese möglichen Vorkommen werden in eckige Klammern gesetzt und mit dem + dahinter werden auch mehrere davon gefunden.zur Sicherheit wird noch die Fundstelle über Zeichen nach dem Wert definiert. in diesem Falle </b> das Ende der Fettschrift, da aber der Schrägstrich für andere Funktionen reserviert ist muss dieser mit einem Backslash "escaped" werden, was zu der Kombination
<\/b>
führt