Wetterbericht

  • Hallo,bin dabei,bestimmte Wetterdaten von Freemeteo zu beziehen,und da ich dort pro auszulesenden Tag mehrmals rumklicken müßte,dachte ich Autoit macht das schon.Soweit,so gut.Mein Array,in dem die Wetterdaten pro Tag eingelesen werden,steht.Dabei habe ich mitbekommen,daß dieses verflixte "ö" mit "ö",z.b." bewölkt" dargestellt wird.das wollt ich jetzt rausformatieren.Erst mal das Script:

    Spoiler anzeigen
    [autoit]


    #include <FF.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <ArrayMore.au3>
    #include <Date.au3>
    #include <ButtonConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <ComboConstants.au3>
    #include <html.au3>
    #include <INet.au3>
    HotKeySet("{ESC}", "ende")
    Opt("GUIOnEventMode", 1)
    $click = 0
    Global $DAYSTRING[1], $url

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

    #Region ### START Koda GUI section ### Form=
    $DatumGUI = GUICreate("Datum erhalten", 357, 193, 310, 170, $WS_POPUP + $WS_BORDER, $WS_EX_TOOLWINDOW)
    GUISetFont(14)
    $Label1 = GUICtrlCreateLabel("", 0, 0, 92, 36, BitOR($SS_CENTER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xffffff)
    $Label2 = GUICtrlCreateLabel("", 265, 0, 92, 36, BitOR($SS_CENTER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xffffff)
    $StartButton = GUICtrlCreateButton("Start", 265, 149, 92, 41, $WS_GROUP)
    $MonthCal1START = GUICtrlCreateMonthCal("2011/02/07", 93, 0, 170, 161)
    GUICtrlSetFont(-1, 8)
    $ort = GUICtrlCreateInput("Dresden", 92, 165, 172, 27, BitOR($SS_CENTER, $WS_BORDER))
    GUISetState(@SW_SHOW)
    GUICtrlSetOnEvent($StartButton, "labeling")
    GUICtrlSetOnEvent($MonthCal1START, "labeling")
    GUICtrlSetOnEvent($ort, "labeling")
    #EndRegion ### END Koda GUI section ###

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

    #Region ### START Koda GUI section ### Form=
    $ORTLISTE = GUICreate("", 417, 60, 192, 124, $WS_POPUP + $WS_BORDER, $WS_EX_TOOLWINDOW)
    $ListView1 = GUICtrlCreateListView("|||||", 0, 0, 417, 60)
    GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

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

    Func los()
    $html = "http://freemeteo.com/default.asp?pid=15&la=3&cn=DE"
    _FFStart($html, "default", 1, True)
    If _FFLoadWait() Then _FFSetValueById("search-city", GUICtrlRead($ort))
    _FFclick("search-submit", "name")
    If _FFLoadWait() Then
    $results = _FFTableWriteToArray(1, "index", "text", True)
    Dim $results1[UBound($results, 1)][5]
    For $a = 0 To UBound($results, 1) - 1
    $results1[$a][0] = $results[$a][0]
    $results1[$a][1] = $results[$a][1]
    $results1[$a][2] = $results[$a][2]
    $results1[$a][3] = $results[$a][5]
    $results1[$a][4] = $results[$a][6]
    Next
    GUISetState(@SW_SHOW, $ORTLISTE)
    GUICtrlSetData($ListView1, $results1[1][0] & "|" & $results1[1][1] & "|" & $results1[1][2] & "|" & $results1[1][3] & "|" & $results1[1][4])
    Dim $listitems[UBound($results)]
    If UBound($results) > 5 Then
    $win = WinGetPos($ORTLISTE, "")
    $con = ControlGetPos($ORTLISTE, "", $ListView1)
    WinMove($ORTLISTE, "", $win[0], $win[1], $con[2], $con[3] + UBound($results) * 10)
    GUICtrlSetPos($ListView1, $con[0], $con[1], $con[2], $con[3] + UBound($results) * 10)
    EndIf
    For $a = 2 To UBound($results) - 1
    If Not StringInStr($results[$a][0], "Seite:" & @TAB, 2) Then
    $listitems[$a] = GUICtrlCreateListViewItem(StringStripWS($results1[$a][0], 1 + 2) & "|" & StringStripWS($results1[$a][1], 1 + 2) & "|" & StringStripWS($results1[$a][2], 1 + 2) & "|" & StringStripWS($results1[$a][3], 1 + 2) & "|" & StringStripWS($results1[$a][4], 1 + 2), $ListView1)
    GUICtrlSetOnEvent(-1, "click1")
    _GUICtrlListView_SetColumnWidth($ListView1, 0, $LVSCW_AUTOSIZE)
    EndIf
    Next
    EndIf
    EndFunc ;==>los

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

    Func labeling()
    Select
    Case @GUI_CtrlId = $MonthCal1START
    Select
    Case $click = 0
    GUICtrlSetData($Label1, GUICtrlRead($MonthCal1START))
    $click = 1
    Case $click = 1
    GUICtrlSetData($Label2, "")
    Select
    Case _DateDiff('D', GUICtrlRead($Label1) & " 00:00:00", GUICtrlRead($MonthCal1START) & " 00:00:00") + 1 < 0
    GUICtrlSetData($Label2, "")
    $click = 1
    Case _DateDiff('D', GUICtrlRead($Label1) & " 00:00:00", GUICtrlRead($MonthCal1START) & " 00:00:00") + 1 > 0
    GUICtrlSetData($Label2, GUICtrlRead($MonthCal1START))
    $click = 0
    EndSelect
    EndSelect
    Case @GUI_CtrlId = $StartButton
    Select
    Case GUICtrlRead($Label1) <> "" And GUICtrlRead($Label2) <> "" And $ort <> ""
    $AnzahlDerTage = _DateDiff('D', GUICtrlRead($Label1) & " 00:00:00", GUICtrlRead($Label2) & " 00:00:00") + 1
    If $AnzahlDerTage < 0 Then
    GUICtrlSetData($Label2, "")
    $click = 1
    Else
    ReDim $DAYSTRING[$AnzahlDerTage]
    EndIf
    For $a = 0 To UBound($DAYSTRING) - 1
    $teilstring = StringSplit(_DateAdd('d', $a, GUICtrlRead($Label1)), "/", 1)
    $DAYSTRING[$a] = "&lc=1&nDate=" & $teilstring[3] & "/" & $teilstring[2] & "/" & $teilstring[1]
    Next
    GUISetState(@SW_HIDE, $DatumGUI)
    los()
    Case GUICtrlRead($Label1) = "" Or GUICtrlRead($Label2) = "" Or $ort = ""
    MsgBox(0, "", "Es fehlen noch Daten")
    EndSelect
    EndSelect
    EndFunc ;==>labeling

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

    Func click()
    If _FFConnect() Then _FFClick(_FFXPath("//table/tbody/tr[" & _GUICtrlListView_GetSelectionMark($ListView1) + 3 & "]/td[1]/a[2]", "", 9))
    If _FFLoadWait() Then $url = StringReplace(_FFCmd(".location.href"), "pid=15", "pid=20", 1, 1)
    If _FFLoadWait() Then Dim $urlstring[UBound($DAYSTRING)][3]
    _FFQuit();>>>>>>>>>>>>>>>>>$DAYSTRING mit for next
    $time = TimerInit()
    Local $RESULT[1][UBound($DAYSTRING)]
    For $a = 0 To UBound($DAYSTRING) - 1
    $urlstring[$a][0] = $url & $DAYSTRING[$a]
    $urlstring[$a][1] = StringLeft($urlstring[$a][0], StringInStr($urlstring[$a][0], "&nDate=", 2) - 2) & 3 & StringRight($urlstring[$a][0], StringLen($urlstring[$a][0]) - StringInStr($urlstring[$a][0], "&nDate=", 2) + 1)
    $urlstring[$a][2] = StringLeft($urlstring[$a][0], StringInStr($urlstring[$a][0], "&nDate=", 2) - 2) & 5 & StringRight($urlstring[$a][0], StringLen($urlstring[$a][0]) - StringInStr($urlstring[$a][0], "&nDate=", 2) + 1)
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][0]), "distilo", "", 5, 16)
    Dim $RESULT1[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT1 = $tagesresults
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][1]), "distilo", "", 5, 16)
    Dim $RESULT2[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT2 = $tagesresults
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][2]), "distilo", "", 5, 16)
    Dim $RESULT3[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT3 = $tagesresults
    if UBound($RESULT1, 1)>UBound($RESULT, 1) then ReDim $RESULT[UBound($RESULT1, 1)][UBound($DAYSTRING)];[5]
    For $a1 = 0 To UBound($RESULT1, 1) - 1
    $RESULT[0][$a] = StringTrimLeft($DAYSTRING[$a], 12)
    If $a1 > 0 Then
    $zwischen = _StringBetween($RESULT1[$a1][2], '<b>', '</b><br')
    $vergleich=StringInStr($zwischen,"ö")
    if $vergleich<>0 then
    $zwischen =StringReplace($zwischen,"ö","ö")
    EndIf
    $RESULT[$a1][$a] = __HTML_Filter($RESULT1[$a1][0], 15) & "|" & __HTML_Filter($RESULT1[$a1][3], 8) & "|" & __HTML_Filter($RESULT3[$a1][3], 8) & "|" & __HTML_Filter($RESULT2[$a1][3], 8) & "|" & $zwischen[0]
    EndIf
    Next
    Next
    $time1 = TimerDiff($time)
    _ArrayDisplay($RESULT, $time1 / 1000)
    exit
    EndFunc ;==>click

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

    Func click1()
    GUISetState(@SW_HIDE, $ORTLISTE)
    click()
    EndFunc ;==>click1

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

    Func Ende()
    _FFQuit()
    Exit
    EndFunc ;==>Ende

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

    While 1
    Sleep(10)
    WEnd

    [/autoit]

    der Formatierungsversuch läuft zwischen Zeile 145-148 ab >>>> geht aber nicht
    dann hab ichs mal auf die Idiotentour gemacht:

    Spoiler anzeigen
    [autoit]


    $test="Teilweise bewölkt"
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$test' & @lf & @lf & 'Return:' & @lf & $test) ;### Debug MSGBOX
    $w=StringInStr($test,"ö")
    if $w<>0 then
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$w' & @lf & @lf & 'Return:' & @lf & $w) ;### Debug MSGBOX
    $test=StringReplace($test,"ö","ö")
    EndIf
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$test' & @lf & @lf & 'Return:' & @lf & $test) ;### Debug MSGBOX

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

    Das geht.
    Weiß einer Rat????

    Sorry,hab die html.au3 vergessen,ranzuhängen

  • Danke,

    Spoiler anzeigen
    [autoit]


    $zwischen = _StringBetween(BinaryToString($RESULT1[$a1][2],4), '<b>', '</b><br')

    [/autoit]

    wirkt Wunder.

    Wenns nicht nervt,kann man dieses aufploppen des FF-Fensters am anfang irgendwie unterbinden ?

  • Wenns nicht nervt,kann man dieses aufploppen des FF-Fensters am anfang irgendwie unterbinden ?


    Afair geht FF nicht im embedded-Mous, aber ich kann es nicht testen denn dein Skript läuft bei mir nicht:

    es fehlt mir die html.au3 kannst du diese bitte anhängen,

    mfg autoBert

  • Ich habe mich nun schon länger mit der FF.au3 sowie Firefox selbst auseinander gesetzt.
    Ich habe auch mal nach einer Möglichkeit gesucht Firefox minimiert zu starten, doch leider erfolglos.
    Das was du machst(den Hide Parameter auf "True") ist schon so ziemlich das einzige was man machen kann.
    Ich hab dazu auch mal nen Tread eröffnet. Leider ist es mir bisher nur gelungen Firefox erst nach dem Start zu minimieren.

    [ offen ] Programm minimiert starten oder minimieren geht nicht.

  • lässt sich die ganze Ortabfrage mit dem IE (gehided) vllt. lösen (etwa auch schneller),komm da mit den ganzen _IE funktionen nicht zurande,wenn es darum geht,Inputs auszufüllen,Buttons zu klicken und Tabellen auszulesen.hab das mit firefox und xpather bis jetzt eigentlich ganz gut im Griff.


    btw hab die html.au3 im 1.post angehängt,hab die hier aus dem Forum gefischt,und deren _HTML_GetTable() find ich um Längen schneller als die _FFTableWriteToArray() aus der FF.au3

    in punkto speed würde mir ja schon reichen,wenn ich die _HTML_GetTable() mit

    Spoiler anzeigen
    [autoit]


    If _FFLoadWait() Then
    $results = _FFTableWriteToArray(1, "index", "text", True)

    [/autoit]

    aus Zeile 52 austauschen könnte,aber ZwischenArrayprüfungen ergaben keine ergebnisse

    Einmal editiert, zuletzt von TAFFY (9. Februar 2011 um 01:07)

  • Hallo Taffy,

    danke dass du die HTML.AU3 angehängt hast. Nachdem ich dann noch die FFEX.AU3 included habe konnte ich das Skript starten, danach kommt bei mir für Eingabe Dresden und 2* dem heutigen Tag ein Skriptabsturz. Jetzt folgende Konsolenmeldungen

    aber wenn es bei dir läuft ist es ja in Ordnung. Ich hole mir meine Wetterinfos mit DesktopWetter von @Gummibaer,

    mfg autoBert

  • script nochmal verändert

    Spoiler anzeigen
    [autoit]


    #include <FF.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <ArrayMore.au3>
    #include <Date.au3>
    #include <ButtonConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <ComboConstants.au3>
    #include <html.au3>
    #include <INet.au3>
    HotKeySet("{ESC}", "ende")
    Opt("GUIOnEventMode", 1)
    $click = 0
    Global $DAYSTRING[1], $url

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

    #Region ### START Koda GUI section ### Form=
    $DatumGUI = GUICreate("Datum erhalten", 357, 193, 310, 170, $WS_POPUP + $WS_BORDER, $WS_EX_TOOLWINDOW)
    GUISetFont(14)
    $Label1 = GUICtrlCreateLabel("", 0, 0, 92, 36, BitOR($SS_CENTER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xffffff)
    $Label2 = GUICtrlCreateLabel("", 265, 0, 92, 36, BitOR($SS_CENTER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xffffff)
    $StartButton = GUICtrlCreateButton("Start", 265, 149, 92, 41, $WS_GROUP)
    $MonthCal1START = GUICtrlCreateMonthCal("2011/02/07", 93, 0, 170, 161)
    GUICtrlSetFont(-1, 8)
    $ort = GUICtrlCreateInput("Dresden", 92, 165, 172, 27, BitOR($SS_CENTER, $WS_BORDER))
    GUISetState(@SW_SHOW)
    GUICtrlSetOnEvent($StartButton, "labeling")
    GUICtrlSetOnEvent($MonthCal1START, "labeling")
    GUICtrlSetOnEvent($ort, "labeling")
    #EndRegion ### END Koda GUI section ###

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

    #Region ### START Koda GUI section ### Form=
    $ORTLISTE = GUICreate("", 417, 60, 192, 124, $WS_POPUP + $WS_BORDER, $WS_EX_TOOLWINDOW)
    $ListView1 = GUICtrlCreateListView("|||||", 0, 0, 417, 60)
    GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

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

    Func los()
    $html = "http://freemeteo.com/default.asp?pid=15&la=3&cn=DE"
    _FFStart($html, "default", 1, True)
    If _FFLoadWait() Then _FFSetValueById("search-city", GUICtrlRead($ort))
    _FFclick("search-submit", "name")
    If _FFLoadWait() Then
    $results = _FFTableWriteToArray(1, "index", "text", True)
    Dim $results1[UBound($results, 1)][5]
    For $a = 0 To UBound($results, 1) - 1
    $results1[$a][0] = $results[$a][0]
    $results1[$a][1] = $results[$a][1]
    $results1[$a][2] = $results[$a][2]
    $results1[$a][3] = $results[$a][5]
    $results1[$a][4] = $results[$a][6]
    Next
    GUISetState(@SW_SHOW, $ORTLISTE)
    GUICtrlSetData($ListView1, $results1[1][0] & "|" & $results1[1][1] & "|" & $results1[1][2] & "|" & $results1[1][3] & "|" & $results1[1][4])
    Dim $listitems[UBound($results)]
    If UBound($results) > 5 Then
    $win = WinGetPos($ORTLISTE, "")
    $con = ControlGetPos($ORTLISTE, "", $ListView1)
    WinMove($ORTLISTE, "", $win[0], $win[1], $con[2], $con[3] + UBound($results) * 10)
    GUICtrlSetPos($ListView1, $con[0], $con[1], $con[2], $con[3] + UBound($results) * 10)
    EndIf
    For $a = 2 To UBound($results) - 1
    If Not StringInStr($results[$a][0], "Seite:" & @TAB, 2) Then
    $listitems[$a] = GUICtrlCreateListViewItem(StringStripWS($results1[$a][0], 1 + 2) & "|" & StringStripWS($results1[$a][1], 1 + 2) & "|" & StringStripWS($results1[$a][2], 1 + 2) & "|" & StringStripWS($results1[$a][3], 1 + 2) & "|" & StringStripWS($results1[$a][4], 1 + 2), $ListView1)
    GUICtrlSetOnEvent(-1, "click1")
    _GUICtrlListView_SetColumnWidth($ListView1, 0, $LVSCW_AUTOSIZE)
    EndIf
    Next
    EndIf
    EndFunc ;==>los

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

    func form($string,$flag)
    Select
    case $flag=0 ;YYYY/MM/DD "/"
    $z=StringSplit($string,"/",1)
    $tagesdatum=$z[3]&"/"&$z[2]&"/"&$z[1]
    case $flag=1 ;DD/MM/YYYY
    $z=StringSplit($string,".",1)
    $tagesdatum=$z[3]&"."&$z[2]&"."&$z[1]
    EndSelect
    Return $tagesdatum
    EndFunc

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

    Func labeling()
    Select
    Case @GUI_CtrlId = $MonthCal1START
    Select
    case GUICtrlRead($MonthCal1START)>_NowCalcDate()
    GUICtrlSetData($Label1,"")
    GUICtrlSetData($Label2,"")
    $click = 0
    EndSelect
    Select
    Case $click = 0 and GUICtrlRead($MonthCal1START)<=_NowCalcDate()
    if GUICtrlRead($Label2) <> "" Then
    if _DateDiff('D', form(StringReplace(GUICtrlRead($Label2),".","/"),0) & " 00:00:00", GUICtrlRead($MonthCal1START) & " 00:00:00") > 0 then
    GUICtrlSetData($Label1,"")
    $click = 0
    else
    GUICtrlSetData($Label1,form(StringReplace(GUICtrlRead($MonthCal1START),"/","."),1))
    $click = 1
    EndIf
    Else
    GUICtrlSetData($Label1,form(StringReplace(GUICtrlRead($MonthCal1START),"/","."),1))
    $click = 1
    EndIf
    Case $click = 1 and GUICtrlRead($MonthCal1START)<=_NowCalcDate()
    GUICtrlSetData($Label2, "")
    Select
    Case _DateDiff('D', form(StringReplace(GUICtrlRead($Label1),".","/"),0) & " 00:00:00", GUICtrlRead($MonthCal1START) & " 00:00:00") + 1 < 0
    GUICtrlSetData($Label2, "")
    $click = 1
    Case _DateDiff('D', form(StringReplace(GUICtrlRead($Label1),".","/"),0) & " 00:00:00", GUICtrlRead($MonthCal1START) & " 00:00:00") + 1 > 0
    GUICtrlSetData($Label2, form(StringReplace(GUICtrlRead($MonthCal1START),"/","."),1))
    $click = 0
    EndSelect
    EndSelect
    Case @GUI_CtrlId = $StartButton
    Select
    Case GUICtrlRead($Label1) <> "" And GUICtrlRead($Label2) <> "" And $ort <> ""
    $AnzahlDerTage = _DateDiff('D', form(StringReplace(GUICtrlRead($Label1),".","/"),0) & " 00:00:00", form(StringReplace(GUICtrlRead($Label2),".","/"),0) & " 00:00:00") + 1
    If $AnzahlDerTage < 0 Then
    GUICtrlSetData($Label2, "")
    $click = 1
    Else
    ReDim $DAYSTRING[$AnzahlDerTage]
    EndIf
    For $a = 0 To UBound($DAYSTRING) - 1
    $teilstring = StringSplit(_DateAdd('d', $a, form(StringReplace(GUICtrlRead($Label1),".","/"),0)), "/", 1)
    $DAYSTRING[$a] = "&lc=1&nDate=" & $teilstring[3] & "/" & $teilstring[2] & "/" & $teilstring[1]
    Next
    GUISetState(@SW_HIDE, $DatumGUI)
    los()
    Case GUICtrlRead($Label1) = "" Or GUICtrlRead($Label2) = "" Or $ort = ""
    MsgBox(0, "", "Es fehlen noch Daten")
    EndSelect
    EndSelect
    EndFunc ;==>labeling

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

    Func click()
    If _FFConnect() Then _FFClick(_FFXPath("//table/tbody/tr[" & _GUICtrlListView_GetSelectionMark($ListView1) + 3 & "]/td[1]/a[2]", "", 9))
    If _FFLoadWait() Then $url = StringReplace(_FFCmd(".location.href"), "pid=15", "pid=20", 1, 1)
    If _FFLoadWait() Then Dim $urlstring[UBound($DAYSTRING)][3]
    _FFQuit()
    $time = TimerInit()
    Local $RESULT[1][UBound($DAYSTRING)]
    For $a = 0 To UBound($DAYSTRING) - 1
    $urlstring[$a][0] = $url & $DAYSTRING[$a]
    $urlstring[$a][1] = StringLeft($urlstring[$a][0], StringInStr($urlstring[$a][0], "&nDate=", 2) - 2) & 3 & StringRight($urlstring[$a][0], StringLen($urlstring[$a][0]) - StringInStr($urlstring[$a][0], "&nDate=", 2) + 1)
    $urlstring[$a][2] = StringLeft($urlstring[$a][0], StringInStr($urlstring[$a][0], "&nDate=", 2) - 2) & 5 & StringRight($urlstring[$a][0], StringLen($urlstring[$a][0]) - StringInStr($urlstring[$a][0], "&nDate=", 2) + 1)
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][0]), "distilo", "", 5, 16)
    Dim $RESULT1[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT1 = $tagesresults
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][1]), "distilo", "", 5, 16)
    Dim $RESULT2[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT2 = $tagesresults
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][2]), "distilo", "", 5, 16)
    Dim $RESULT3[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT3 = $tagesresults
    if UBound($RESULT1, 1)>UBound($RESULT, 1) then ReDim $RESULT[UBound($RESULT1, 1)][UBound($DAYSTRING)];[5]
    For $a1 = 0 To UBound($RESULT1, 1) - 1
    $RESULT[0][$a] = StringTrimLeft($DAYSTRING[$a], 12)
    If $a1 > 0 Then
    $zwischen = _StringBetween(BinaryToString($RESULT1[$a1][2],4), '<b>', '</b><br')
    $RESULT[$a1][$a] = StringReplace(__HTML_Filter($RESULT1[$a1][0], 15),"","") & "|" & __HTML_Filter($RESULT1[$a1][3], 8) & "|" & __HTML_Filter($RESULT3[$a1][3], 8) & "|" & __HTML_Filter($RESULT2[$a1][3], 8) & "|" & $zwischen[0]
    EndIf
    Next
    Next
    $time1 = TimerDiff($time)
    _ArrayDisplay($RESULT, $time1 / 1000)
    exit
    EndFunc ;==>click

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

    Func click1()
    GUISetState(@SW_HIDE, $ORTLISTE)
    click()
    EndFunc ;==>click1

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

    Func Ende()
    _FFQuit()
    Exit
    EndFunc ;==>Ende

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

    While 1
    Sleep(10)
    WEnd

    [/autoit]

    autoBert versuch mal die FF.au3

    @all , wollt nch mal den Sinn dieses Scriptes erklären.
    Und zwar muss ich berufsbedingt zu meinen Tätigkeiten halt auch immer die Wetterbedingungen protokollieren.Nun Ja,faul wie Atze,komm ich dazu nicht immer zeitnah,und so muss ich mich am WE hinsetzen und die Daten händisch aus dem www austragen.Freemeteo bietet da eben die Mgl. der "früheren Wetterdaten" mit den benötigten Werten auch rel. gut aufbereitet.Die Ortsabfrage,weil ich Montagearbeiter bin und mein Tätigkeitsort wöchentlich wechselt.es soll also keine Wetteranzeige des momentanen Wetters sein.wenn da jemand noch eine andere
    (leichter auszulesende Seite) kennt,würde ich mich auch freuen.

    bleibt noch meine Frage aus Post 6 bezüglich IE,deshalb lass ich den Thread mal offen

  • Hallo Taffy,

    ich habe deine neue Version (inkl. der von dir bereitgestelten Includes) getestet. Skript bleibt hängen, Konsolenausgabe:

    das kann aber an meiner "mageren" INet-Verbindung liegen,

    mfg autoBert

  • So ich hab mich jetzt mal durch die _IE Funktionen gebissen und hab das Script jetzt so umgebogen,wie ich es mag (IE sei Dank)
    -kein aufploppen des Browserfensters
    -logische Abfrage des Start und Enddatums (btw linkes Label=Start >>> rechtes Label=EndDatum) sowie des Ortes
    vllt klappt das script ja jetzt auch bei autobert

    Spoiler anzeigen
    [autoit]


    #include <String.au3>
    #include <Array.au3>
    #include <ArrayMore.au3>
    #include <Date.au3>
    #include <ButtonConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <ComboConstants.au3>
    #include <html.au3>
    #include <INet.au3>
    #include <IE.au3>
    HotKeySet("{ESC}", "ende")
    Opt("GUIOnEventMode", 1)
    $click = 0
    Global $DAYSTRING[1], $url, $oIE, $Element

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

    #Region ### START Koda GUI section ### Form=
    $DatumGUI = GUICreate("Datum erhalten", 357, 193, 310, 170, $WS_POPUP + $WS_BORDER, $WS_EX_TOOLWINDOW)
    GUISetFont(14)
    $Label1 = GUICtrlCreateLabel("", 0, 0, 92, 36, BitOR($SS_CENTER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xffffff)
    $Label2 = GUICtrlCreateLabel("", 265, 0, 92, 36, BitOR($SS_CENTER, $WS_BORDER))
    GUICtrlSetBkColor(-1, 0xffffff)
    $StartButton = GUICtrlCreateButton("Start", 265, 149, 92, 41, $WS_GROUP)
    $MonthCal1START = GUICtrlCreateMonthCal("2011/02/07", 93, 0, 170, 161)
    GUICtrlSetFont(-1, 8)
    $ort = GUICtrlCreateInput("Hoyerswerda", 92, 165, 172, 27, BitOR($SS_CENTER, $WS_BORDER))
    GUISetState(@SW_SHOW)
    GUICtrlSetOnEvent($StartButton, "labeling")
    GUICtrlSetOnEvent($MonthCal1START, "labeling")
    GUICtrlSetOnEvent($ort, "labeling")
    #EndRegion ### END Koda GUI section ###

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

    #Region ### START Koda GUI section ### Form=
    $ORTLISTE = GUICreate("", 417, 60, 192, 124, $WS_POPUP + $WS_BORDER, $WS_EX_TOOLWINDOW)
    $ListView1 = GUICtrlCreateListView("|||||", 0, 0, 417, 60)
    GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

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

    Func los()
    $html = "http://freemeteo.com/default.asp?pid=15&la=3&cn=DE"
    $oIE = _IECreate($html, 0, 0)
    $oForm = _IEFormGetCollection($oIE, 0)
    $oQuery = _IEFormElementGetCollection($oForm, 2)
    $name = _IEGetObjById($oIE, "search-city")
    _IEFormElementSetValue($name, GUICtrlRead($ort))
    _IEFormSubmit($oForm)
    $oTable = _IETableGetCollection($oIE, 1)
    $results = _IETableWriteToArray($oTable, True)
    If UBound($results, 2) < 5 Then
    MsgBox(0, "", "Diesen Ort gibt es nicht")
    GUISetState(@SW_SHOW, $DatumGUI)
    GUICtrlSetData($Label1, "")
    GUICtrlSetData($Label2, "")
    GUICtrlSetData($ort, "")
    _IEQuit($oIE)
    Return
    EndIf
    Dim $results1[UBound($results, 1)][5]
    For $a = 0 To UBound($results, 1) - 1
    $results1[$a][0] = $results[$a][0]
    $results1[$a][1] = $results[$a][1]
    $results1[$a][2] = $results[$a][2]
    $results1[$a][3] = $results[$a][5]
    $results1[$a][4] = $results[$a][6]
    Next
    GUISetState(@SW_SHOW, $ORTLISTE)
    GUICtrlSetData($ListView1, $results1[1][0] & "|" & $results1[1][1] & "|" & $results1[1][2] & "|" & $results1[1][3] & "|" & $results1[1][4])
    Dim $listitems[UBound($results)]
    If UBound($results) > 5 Then
    $win = WinGetPos($ORTLISTE, "")
    $con = ControlGetPos($ORTLISTE, "", $ListView1)
    GUICtrlSetPos($ListView1, $con[0], $con[1], $con[2], $con[3] + UBound($results) * 10)
    WinMove($ORTLISTE, "", $win[0], $win[1], $con[2], $con[3] + UBound($results) * 10)
    EndIf
    For $a = 2 To UBound($results) - 1
    If Not StringInStr($results[$a][0], "Seite:" & @TAB, 2) Then
    $listitems[$a] = GUICtrlCreateListViewItem(StringStripWS($results1[$a][0], 1 + 2) & "|" & StringStripWS($results1[$a][1], 1 + 2) & "|" & StringStripWS($results1[$a][2], 1 + 2) & "|" & StringStripWS($results1[$a][3], 1 + 2) & "|" & StringStripWS($results1[$a][4], 1 + 2), $ListView1)
    GUICtrlSetOnEvent(-1, "click1")
    _GUICtrlListView_SetColumnWidth($ListView1, 0, $LVSCW_AUTOSIZE)
    EndIf
    Next
    EndFunc ;==>los

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

    Func click()
    $Element = _IEXpath($oIE, "html/body/div[@id='out']/div[@id='container_bg']/div[@id='container']/div[@id='distilo']/div[3]/div[1]/div[@id='inlandW']/table/tbody/tr[" & _GUICtrlListView_GetSelectionMark($ListView1) + 3 & "]/td[1]/a[2]")
    _IEAction($Element, "click")
    _IELoadWait($oIE)
    $url = StringReplace(ControlGetText("[CLASS:IEFrame]", "", "Edit1"), "pid=15", "pid=20", 1, 1)
    Dim $urlstring[UBound($DAYSTRING)][3]
    _IEQuit($oIE)
    Local $RESULT[1][UBound($DAYSTRING)]
    For $a = 0 To UBound($DAYSTRING) - 1
    $urlstring[$a][0] = $url & $DAYSTRING[$a]
    $urlstring[$a][1] = StringLeft($urlstring[$a][0], StringInStr($urlstring[$a][0], "&nDate=", 2) - 2) & 3 & StringRight($urlstring[$a][0], StringLen($urlstring[$a][0]) - StringInStr($urlstring[$a][0], "&nDate=", 2) + 1)
    $urlstring[$a][2] = StringLeft($urlstring[$a][0], StringInStr($urlstring[$a][0], "&nDate=", 2) - 2) & 5 & StringRight($urlstring[$a][0], StringLen($urlstring[$a][0]) - StringInStr($urlstring[$a][0], "&nDate=", 2) + 1)
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][0]), "distilo", "", 5, 16)
    Dim $RESULT1[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT1 = $tagesresults
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][1]), "distilo", "", 5, 16)
    Dim $RESULT2[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT2 = $tagesresults
    $tagesresults = _HTML_GetTable(_HTML_GetSource($urlstring[$a][2]), "distilo", "", 5, 16)
    Dim $RESULT3[UBound($tagesresults, 1)][UBound($tagesresults, 2)]
    $RESULT3 = $tagesresults
    If UBound($RESULT1, 1) > UBound($RESULT, 1) Then ReDim $RESULT[UBound($RESULT1, 1)][UBound($DAYSTRING)]
    For $a1 = 0 To UBound($RESULT1, 1) - 1
    $RESULT[0][$a] = StringTrimLeft($DAYSTRING[$a], 12)
    If $a1 > 0 Then
    $zwischen = _StringBetween(BinaryToString($RESULT1[$a1][2], 4), '<b>', '</b><br')
    $RESULT[$a1][$a] = StringReplace(__HTML_Filter($RESULT1[$a1][0], 15), "", "") & "|" & __HTML_Filter($RESULT1[$a1][3], 8) & "|" & __HTML_Filter($RESULT3[$a1][3], 8) & "|" & __HTML_Filter($RESULT2[$a1][3], 8) & "|" & $zwischen[0]
    EndIf
    Next
    Next
    _ArrayDisplay($RESULT)
    Exit
    EndFunc ;==>click

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

    Func form($string, $flag)
    Select
    Case $flag = 0
    $z = StringSplit($string, "/", 1)
    $tagesdatum = $z[3] & "/" & $z[2] & "/" & $z[1]
    Case $flag = 1
    $z = StringSplit($string, ".", 1)
    $tagesdatum = $z[3] & "." & $z[2] & "." & $z[1]
    EndSelect
    Return $tagesdatum
    EndFunc ;==>form

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

    Func labeling()
    Select
    Case @GUI_CtrlId = $MonthCal1START
    Select
    Case GUICtrlRead($MonthCal1START) > _NowCalcDate()
    GUICtrlSetData($Label1, "")
    GUICtrlSetData($Label2, "")
    $click = 0
    EndSelect
    Select
    Case $click = 0 And GUICtrlRead($MonthCal1START) <= _NowCalcDate()
    If GUICtrlRead($Label2) <> "" Then
    If _DateDiff('D', form(StringReplace(GUICtrlRead($Label2), ".", "/"), 0) & " 00:00:00", GUICtrlRead($MonthCal1START) & " 00:00:00") > 0 Then
    GUICtrlSetData($Label1, "")
    $click = 0
    Else
    GUICtrlSetData($Label1, form(StringReplace(GUICtrlRead($MonthCal1START), "/", "."), 1))
    $click = 1
    EndIf
    Else
    GUICtrlSetData($Label1, form(StringReplace(GUICtrlRead($MonthCal1START), "/", "."), 1))
    $click = 1
    EndIf
    Case $click = 1 And GUICtrlRead($MonthCal1START) <= _NowCalcDate()
    GUICtrlSetData($Label2, "")
    Select
    Case _DateDiff('D', form(StringReplace(GUICtrlRead($Label1), ".", "/"), 0) & " 00:00:00", GUICtrlRead($MonthCal1START) & " 00:00:00") + 1 < 0
    GUICtrlSetData($Label2, "")
    $click = 1
    Case _DateDiff('D', form(StringReplace(GUICtrlRead($Label1), ".", "/"), 0) & " 00:00:00", GUICtrlRead($MonthCal1START) & " 00:00:00") + 1 > 0
    GUICtrlSetData($Label2, form(StringReplace(GUICtrlRead($MonthCal1START), "/", "."), 1))
    $click = 0
    EndSelect
    EndSelect
    Case @GUI_CtrlId = $StartButton
    Select
    Case GUICtrlRead($Label1) <> "" And GUICtrlRead($Label2) <> "" And $ort <> ""
    $AnzahlDerTage = _DateDiff('D', form(StringReplace(GUICtrlRead($Label1), ".", "/"), 0) & " 00:00:00", form(StringReplace(GUICtrlRead($Label2), ".", "/"), 0) & " 00:00:00") + 1
    If $AnzahlDerTage < 0 Then
    GUICtrlSetData($Label2, "")
    $click = 1
    Else
    ReDim $DAYSTRING[$AnzahlDerTage]
    EndIf
    For $a = 0 To UBound($DAYSTRING) - 1
    $teilstring = StringSplit(_DateAdd('d', $a, form(StringReplace(GUICtrlRead($Label1), ".", "/"), 0)), "/", 1)
    $DAYSTRING[$a] = "&lc=1&nDate=" & $teilstring[3] & "/" & $teilstring[2] & "/" & $teilstring[1]
    Next
    GUISetState(@SW_HIDE, $DatumGUI)
    los()
    Case GUICtrlRead($Label1) = "" Or GUICtrlRead($Label2) = "" Or $ort = ""
    MsgBox(0, "", "Es fehlen noch Daten")
    EndSelect
    EndSelect
    EndFunc ;==>labeling

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

    Func click1()
    GUISetState(@SW_HIDE, $ORTLISTE)
    click()
    EndFunc ;==>click1

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

    Func Ende()
    _IEQuit($oIE)
    Exit
    EndFunc ;==>Ende

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

    While 1
    Sleep(10)
    WEnd

    [/autoit]

    werde den Status "gelöst" stellen