Webseiten Unwetterwarnungen - letzter Post

  • Hallo Leute!

    Ich habe wiedereinmal ein Problem. unzwar da wo jetzt $anfang7 = "," steht kann das Script den String anscheinend nicht finden.
    Um die Suche weiterhin einzugrenzen, wollte ich einfach den $anfang7 string abändern, da er so im HTML Text auch vorkommt (s. hier)
    <param name="movie" value="Hier?bildl=knight2a&bildr=knight3a&ritterl=Test, 34&ritterr=xxxxxx,

    [autoit]


    _IENavigate($oIE, " http://www.HIER.de")
    _IELoadWait($oIE)
    $sText7 = _IEBodyReadHTML($oIE)
    $anfang7 = ", "
    $ende7 = "&ritterr=xxxxxx,"
    $gesucht7 = _StringBetween($sText7, $anfang7, $ende7)
    $gesucht7 = $gesucht7[0]

    [/autoit]


    Im Grunde genommen kann er wo jetzt rot markiert ist, ritterl=Test über eine Variable zugefügt bekommen, das die Variable gleich dem Namen ist, der dort steht.
    Das würde ja dann so aussehen: ritterl=$eintragen wobei ja dann $eintragen = Test wäre.
    Jedoch muss das ja in den String irgendwie eingefügt werden, und da weiß ich nicht wie das geht, deswegen frage ich nach. Mit anderen Worten:
    $anfang7 = "ritterl=$eintragen, "

    Herauskommen sollte dann eine 34...

    kann jemand helfen???

  • Hallo zusammen,

    um nicht extra ein neues Thema aufuzumachen, nehme ich einfach mal dieses Thema, was ich vor "Jahren" mal erstellt haben soll *gg*

    Diesesmal gehts, logischerweise, wieder um eine I-Net Seite, nämlich ums liebe Wetter ;)

    Ich versuche aus der Seite von unwetterzentrale.de zu einem bestimmten Ort, aktive Meldungen abzufragen.

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <file.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IEcreate("http://www.unwetterzentrale.de/uwz/getwarning_de.php?xpos=156&ypos=325&bland=nrw&lang=de")
    If FileExists(@scriptdir & "\wetter.txt") Then
    FileDelete(@scriptdir & "\wetter.txt")
    Else
    $sText = _IEBodyReadText ($oIE)
    ;~ MsgBox(0, "Body Text", $sText)
    $fileopen = FileOpen(@scriptdir & "\wetter.txt",1)
    FileWrite($fileopen, $sText)
    FileClose($fileopen)
    EndIf
    _IEQuit($oIE)
    Exit

    [/autoit]

    Das funktioniert auch Super soweit... in der Textdatei (testweise da den bodytext reingesetzt) landen auch wirklich alle Daten. Jetzt geht es mir aber darum, dass ich nicht genau weiß wie ich es anstellen soll, dass er nur folgenden Bereich "ausliest".

    Spoiler anzeigen

    Unwetterwarnungen für Düsseldorf
    Viersen (40211)
    Vorwarnung vor Gewitter,
    Warnstufe Rot erwartet
    gültig von: Dienstag, 23. August 2011, 23:10 Uhr
    gültig bis: Donnerstag, 25. August 2011, 22:00 Uhr
    gültig für: alle Höhenstufen Lokal kräftige Schauer und Gewitter mit Starkregen, Hagel, Sturmböen möglich
    Diese Vorwarnung wurde am Dienstag, 23. August 2011, 20:07 Uhr zuletzt aktualisiert.

    Dabei soll dann möglichst Unwetterwarnung für Düsseldorf, Vorwarnung vor Gewitter, gültig von:..., gültig bis:... so ausgelesen werden, dass Sie z.B. in eine Mail gepackt und dann verschickt werden.
    Ich gehe davon aus dass ich ein Array benötigen werde?

    Zudem gibt es auch die Möglichkeit, dass gleich mehrere Warnungen auftreten könnten. z.B Warnung vor Hitze, Wind und Gewitter... (akut für Unwetterwarnungen für Prenzlaualso alles nicht so einfach...
    wenn mir jemand en Tipp geben würde, wie ich da an mein gewünschtes Ziel komme, würde ich mich sehr freuen.

  • Hmmm nun, habe da zwar mal hingeschrieben, aber wenn ich dafür was latzen muss, muss doch lieber ein AutoIt Script ran ;)

    Vielleicht (oder eher gesagt hoffentlich) haben andere vielleicht noch bessere Ideen?!

  • Hallo Volumeman,

    du kannst doch die Angaben schön extrahieren, _StringBetween und StringSplit reicht dazu völlig aus. Hier mal am Beispiel Prenzlau:

    Spoiler anzeigen
    [autoit]

    #include <INet.au3>
    #include <IE.au3>
    #include <file.au3>
    #include <Array.au3>
    #include <String.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IECreate("http://www.unwetterzentrale.de/uwz/getwarning_de.php?xpos=373&ypos=93&bland=brandenburg&lang=de")
    If FileExists(@ScriptDir & "\wetter.txt") Then
    FileDelete(@ScriptDir & "\wetter.txt")
    Else
    $sText = _IEBodyReadText($oIE)
    ;~ MsgBox(0, "Body Text", $sText)
    $fileopen = FileOpen(@ScriptDir & "\wetter.txt", 1)
    FileWrite($fileopen, $sText)
    FileClose($fileopen)
    $aWetter = _StringBetween($sText, "Prenzlau (17291)", "aktualisiert")
    ;_ArrayDisplay($aWetter)
    For $i = 0 To UBound($aWetter) - 1
    $aWetter[$i] = $aWetter[$i] & "aktualisiert" ;wieder anfügen da durch _StringBetween abgeschnitten
    $aSplit = StringSplit($aWetter[$i], @CRLF, 3)
    _ArrayDisplay($aSplit)
    Next
    EndIf
    _IEQuit($oIE)

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit]

    mfg autoBert

  • Hallo ihr Lieben,

    AutoBert hatte mal wieder die Optimal-Lösung ^^
    genau so wie ich mir vorgestellt habe ist es auch... wenn man weiß wie es geht ists echt simpel...

    Waaaahnsinn... ;)
    Jetzt nur noch das Mail verschicken lassen bzw. über die Erzeugung einer Flagdatei an Zabbix anbinden fertig ist die "Petze" fürs Wetter :D

    Danke an alle