Problem mit HTML & AutoIt

  • Hallo,
    ich hab mal ein Problem.
    Ich hab diesen HTML Code(ausschnit):


    Alle Informationen die ich aus dem Text brauche sind ROT unterstrichen

    So, mein AutoIt Code:

    [autoit]


    $read = guictrlread($Combo1)
    if $read = "24/7 1" then
    $read = "247"
    endif
    if $read = "24/7 2" then
    $read = "247-2"
    endif

    [/autoit]


    Da ich keine Lust habe das für ca. 100 Stück davon zu machen, wollte ich euch fragen ob ihr eine Idee habt, wie ich das besser und kürzer machen könnte.

    [autoit]


    $Label20 = GUICtrlCreateLabel("Hier erscheint die Vorschau von dem Interior:"&@crlf&"Infos zum Interior:"&@crlf&"InteriorID:___ Koordinaten:____", 8, 50, 234, 25)

    [/autoit]


    Da sollte zuerst das hier erscheinen

    Zitat


    <td style="text-align: center;">17</td>

    ( Interior ID )

    Dannach das hier:

    Zitat


    <td style="text-align: right;">-25.884498,-185.868988,1003.546875</td>

    Ich hoffe mir kann jemand helfen, da das wirklich viel zu viel Arbeit ist das alles so umständlich zu machen :pinch:

    MfG

    Einmal editiert, zuletzt von Sparky (7. Mai 2011 um 14:33)

  • Das mit dem Bild downloaden usw. hab ich shcon gelöst mir geht es darum, nicht alles hier:

    [autoit]


    $read = guictrlread($Combo1)
    if $read = "24/7 1" then
    $read = "247"
    endif
    if $read = "24/7 2" then
    $read = "247-2"
    endif

    [/autoit]


    selbst ändern will.
    Da wie bereits gesagt es ca 106 Stück sind.
    Die COmbobox hab ich schon per Hand ausgefüllt, das war mir genug :D

    MfG

  • Spoiler anzeigen
    [autoit]

    #Region - Timestamp
    ;2011-05-02 19:45:36
    #EndRegion - Timestamp

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

    #include <array.au3>
    $string = '<td>24/7 1</td>' & @CRLF & _
    ' <td style="text-align: center;">17</td>' & @CRLF & _
    ' <td style="text-align: right;">-25.884498,-185.868988,1003.546875</td>' & @CRLF & _
    ' <td><a href="http://weedarr.wikidot.com/local--files/interior/247.jpg"><img src="interior-Dateien/thumbnail_069.jpg" alt="247.jpg" class="image"></a></td>' & @CRLF & _
    ' </tr>' & @CRLF & _
    ' <tr>' & @CRLF & _
    ' <td>24/7 2</td>' & @CRLF & _
    ' <td style="text-align: center;">10</td>' & @CRLF & _
    ' <td style="text-align: right;">6.091179,-29.271898,1003.549438</td>' & @CRLF & _
    ' <td><a href="http://weedarr.wikidot.com/local--files/interior/247-2.jpg"><img src="interior-Dateien/thumbnail_020.jpg" alt="247-2.jpg" class="image"></a></td>' & @CRLF & _
    ' </tr>'

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

    $aResult = StringRegExp($string, '(?s)<td>(\d+.*?)</td>(?:.*?)center;">(\d+)</td>(?:.*?)right;">(.*?)</td>(?:.*?)alt="(.*?)\.jpg', 4, 1)

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

    Dim $aData[UBound($aResult)][4]
    For $i = 0 To UBound($aResult) - 1
    $aDummy = $aResult[$i]
    $aData[$i][0] = $aDummy[1]
    $aData[$i][1] = $aDummy[2]
    $aData[$i][2] = $aDummy[3]
    $aData[$i][3] = $aDummy[4]
    Next

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

    _ArrayDisplay($aData)

    [/autoit]
  • So, danke für den Code, allerdings hab ich noch ein Problem:
    http://pastebin.com/H1ZSZg58
    Musste den String zu insg 3 zusammenfasse, da ich sonst nen yacc stack overflow (oder ähnlich) bekomme.
    Und ich bekomme da nur insg 6 Ergebnisse raus.
    Ich hoffe mal das du mir helfen kannst :)

    MfG

  • Ich glaube es liegt an dem RegExp, kenne mich damit leider nicht so gut aus.
    Da nicht in allen ein '/' vorkommt.
    In den ersten 6 kommt ein '/' vor, und bei denen klappt es.
    Kann mir jmd helfen?

  • Bekome jetzt

    Code
    C:\Users\----\Desktop\AutoIt v3 Script (neu).au3 (682) : ==> Array variable subscript badly formatted.:
    Dim $aData[UBound($aResult)][4]
    Dim $aData[^ ERROR
    ->16:39:34 AutoIT3.exe ended.rc:1
    >Exit code: 1    Time: 10.610
    [autoit]


    $aResult = StringRegExp($string, '(?s)<td>(.*?)</td>(?:.*?)center;">()</td>(?:.*?)right;">(.*?)</td>(?:.*?)alt="(.*?)\.jpg', 4, 1)

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

    Dim $aData[UBound($aResult)][4] ; errorzeile
    For $i = 0 To UBound($aResult) - 1
    $aDummy = $aResult[$i]
    $aData[$i][0] = $aDummy[1]
    $aData[$i][1] = $aDummy[2]
    $aData[$i][2] = $aDummy[3]
    $aData[$i][3] = $aDummy[4]
    Next

    [/autoit]

    Edit:
    Habs raus es muss:

    [autoit]

    $aResult = StringRegExp($string, '(?s)<td>(.*?)</td>(?:.*?)center;">(\d+)</td>(?:.*?)right;">(.*?)</td>(?:.*?)alt="(.*?)\.jpg', 4, 1)

    [/autoit]


    sein.
    Jetzt hab ich aber das Problem das ich den einen String zu 3 aufgeteilt habe, und nur der erste angezeigt wird.
    Kann man das auch irgendwie lösen?

    Edit2:

    [autoit]


    $endstring = $string & $string2 & $string3
    $aResult = StringRegExp($endstring, '(?s)<td>(.*?)</td>(?:.*?)center;">(\d+)</td>(?:.*?)right;">(.*?)</td>(?:.*?)alt="(.*?)\.jpg', 4, 1)

    [/autoit]


    Habs so gemacht. Leider nur 98 Ergebnisse :S

    2 Mal editiert, zuletzt von Sparky (3. Mai 2011 um 17:03)

  • Zitat

    Da ich keine Lust habe das für ca. 100 Stück davon zu machen, wollte ich euch fragen ob ihr eine Idee habt, wie ich das besser und kürzer machen könnte.

    [autoit]

    $file = FileOpen("test.txt", 1)

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

    ; Prüfen, ob Datei im Schreibmodus geöffnet ist
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    $1='if $read = "24/7 '
    $2='" then'
    $3=' $read = "247"'
    $4='endif'

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

    for $i =1 to 100
    FileWrite($file, $1&$i&$2& @CRLF)
    FileWrite($file,$3& @CRLF)
    FileWrite($file,$4& @CRLF)
    next

    [/autoit]
  • Sry hab vergessen das ich es gelöst habe :S
    Und so würde es nicht gehen, wie du geschrieben hast, denn ich bekomme nicht immer 247 bzw 24/7 raus.