HTTPMod und Regex bei Wetterbericht

Begonnen von Panik, 16 Mai 2016, 08:57:29

Vorheriges Thema - Nächstes Thema

Panik

Hallo,

ich tue mich sehr schwer, den Wetterbericht mit HTTPMod und Regex von http://www.wetter.com/deutschland/berlin/DE0001020.html  herauszufiltern.
Einen betreffenden Auszug aus dem Seitenquelltext habe ich schon erfolgreich(?) unter
https://regex101.com/   mit dem Ausdruck  "<p>(.*?)<\/p>"  getestet.

<div class="clearfix">
    <h3>Dieses Wetter erwartet Sie im Tagesverlauf</h3>

   
    <p>
        In Berlin usw.
                                                </p>

   
        <div class="[ location-warnings cursor--normal layout__item one-half pl0 relative ][ portable-one-whole  mb ]">


Bei HTTPMod in FHEM bekomme ich aber kein Ergebnis (ich möchte mir das später vorlesen lassen)
das ist das gekürzte List:


Internals:
   BUSY       0
   CHANGED
   DEF        http://www.wetter.com/deutschland/berlin/DE0001020.html 60
   Interval   60
   LASTSEND   1463381480.65371
   MainURL    http://www.wetter.com/deutschland/berlin/DE0001020.html
   NAME       Wettervorhersage
   NR         688
   STATE      ???
   TRIGGERTIME 1463381540.65162
   TRIGGERTIME_FMT 2016-05-16 08:52:20
   TYPE       HTTPMOD
   addr       http://www.wetter.com:80
   buf        HTTP/1.1 200 OK

[hier der Seitenquelltext]

Attributes:
   reading01Name Tagesverlauf
   reading01Regex /<p>(.*?)<\/p>/s     
   timeout    5
   userattr   reading01Name reading01Regex stateFormat timeout


Hat das irgendwie mit den Zeilenumbrüchen zu tun oder muss man noch irgendwo "s modifier: single line" angeben?

Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

frank

reading01Regex /<p>(.*?)<\/p>/s
so wird das nichts. den modifier kannst du so eingeben:

reading01Regex (?s)<p>(.*?)<\/p>
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Panik

Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

Panik

Hallo,

da sich am Seitenquelltext etwas geändert hat und ich das mit dem Regex nicht voll hinbekomme frage ich nach Hilfe in die Runde:
Quelltextauszug:

<div class="[ app-layout ]" id="furtherDetails">

    <h2>Weitere Details zum Wetter in Berlin und Umgebung</h2>

    <div class="[ layout ]">

        <div class="[ layout__item desk-one-third portable-one-whole ] [ portable-mb ]">
                        <h3>Wetter heute, 24.01.2017</h3>
           
            In Berlin kommt es am Morgen zu Schneefällen bei Temperaturen von -2°C. Am Mittag überwiegt dichte Bewölkung aber es bleibt trocken und das Thermometer klettert auf 0°C. Am Abend ist in Berlin der Himmel bedeckt bei Werten von -1 bis zu 0°C. Nachts ist der Himmel bedeckt bei Tiefsttemperaturen von -1°C. <br /><br /> Die Wahrscheinlichkeit für Niederschläge liegt bei 90% und es ist mit einer maximalen Niederschlagsmenge von 0.4 l/m² zu rechnen. Gefühlt liegt die Temperatur bei maximal -1°C.
            <a data-event="" data-label="VHSZeitraum_ZumTrend" href="http://www.wetter.com/wetter_aktuell/wettervorhersage/14_tagesvorhersage/deutschland/berlin/DE0001020.html" class="[ btn--text ] [ absolute--bottom ] [ mt mb ]">
                <span>Zum 14 Tage Ausblick</span><span class="[ icon-arrow_link icon--large ][ pl-- ]"></span>
            </a>
            <hr class="mb0 desk-hide lap-hide">


mein Versuchs-Pattern bis jetzt:

(?s)</h3>.*(.*?)<a data.*?>


Irgendwie muss ich mittels LookBehind und LookAhead die umschließenden Tags wegbekommen
und auch solche Umbruch-Tags: <br />

Kann mir da jemand weiterhelfen?
Danke!
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

JoeALLb

#4
Was ist mit
(?s)</h3>[\n\s]*(.*?)[\n\s]*<a\sdata
?
den unteren Satz verstehe ich nicht ganz, aber ich denke, das obere sollte ausreichen.

Ansonsten könnte man noch mit reading01OExpr oder reading01RecombineExpr spielen.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Panik

Hallo JoeALLb,

danke für deine Hilfe!
Inzwischen hab ich es:


defmod Wettervorhersage HTTPMOD http://www.wetter.com/deutschland/berlin/DE0001020.html 3600
attr Wettervorhersage userattr reading01Name reading01Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex stateFormat timeout
attr Wettervorhersage reading01Name Wetterbericht
attr Wettervorhersage reading01Regex (?s)Wetter heute,.*?</h3>[\n\s]*(.*?)[\n\s]*<a\sdata
attr Wettervorhersage room EG_Balkon
attr Wettervorhersage timeout 10
attr Wettervorhersage userReadings reading01User {my $v = ReadingsVal('Wettervorhersage','Wetterbericht','');; $v =~ s/<br \/>/ /g;; return $v;;}


Mal sehen bis wann das klappt (bis zur nächsten Seitenänderung).

Witzig ist, daß der gewonnene Inhalt ca. im Minutentakt beim Aufbau der Sätze und Wortstellungen wechselt.
Der Betreiber will wohl suggerieren, daß der Inhalt regelmäßig gepflegt wird  ;)

Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW