String herausfiltern

  • hallo hier erstmal ein Ausschnit des HTML-Codes der mir wichtig ist...

    Code
    <img src="gfx/dot.gif"> <a href="download.php?do=cat&id=426">Acura</a> (2)<BR>
    <img src="gfx/dot.gif"> <a href="download.php?do=cat&id=411">Alfa Romeo</a> (2)<BR>
    
    
    <img src="gfx/dot.gif"> <a href="download.php?do=cat&id=410">Aston Martin</a> (3)<BR>
    <img src="gfx/dot.gif"> <a href="download.php?do=cat&id=403">Audi</a> (18)<BR>
    <img src="gfx/dot.gif"> <a href="download.php?do=cat&id=382">BMW</a> (15)<BR>

    Nun möchte ich die ID und die Marke in ein Array speichern...
    Hier mein Ansatz:

    Spoiler anzeigen
    [autoit]

    #include <all.au3>

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

    Global $LINK[99999]
    Global $Data[99999]
    Global $LINE[99999]

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

    $TEMP = @ScriptDir & "\TEMP"
    $LINK[1] = "http://www.gtainside.com/download.php?do=cat&id=341" ;Cars
    $HTML = _INetGetSource($LINK[1])

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

    FileDelete($TEMP)
    FileWrite($TEMP, $HTML)

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

    $COUNT = _FileCountLines($TEMP)
    For $i = 1 To $COUNT
    $LINE[$i] = FileReadLine($TEMP, $i)
    Next

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

    For $i = 1 To $COUNT
    If StringInStr($LINE[$i], '<img src="gfx/dot.gif"> <a href="download.php?do=cat&id=') Then
    $ID = StringMid($LINE[$i], 57, 3)
    $BRAND = StringMid($LINE[$i], 62, 10)
    ConsoleWrite($BRAND & " - " & $ID & @LF)
    EndIf
    Next

    [/autoit]

    Problem ist dass sich die Seite andauernd ändert und somit mit Stringleft nicht gearbeitet werden kann..außerdem kommen manchmal neue einträge hinzu...

    die ID habe ich jetz schon hinbekommen nur den namen kann ich nicht herausfiltern..man müsste irgendwie den teil ab </a> rausschneiden...

    hoffe es kann jemand helfen

    ach ja und wie kann ich $ID und $Brand in ein Array schreiben lassen?

    Einmal editiert, zuletzt von Reaker (23. Dezember 2009 um 16:31)

  • So?

    Spoiler anzeigen
    [autoit]

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

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

    $URL = "http://www.gtainside.com/download.php?do=cat&id=116" ;Cars
    $sText = _INetGetSource($URL)

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

    $a = _StringBetween($sText, '<img src="gfx/dot.gif"> <a href="download.php?do=cat&id=', "</a>")
    For $i = 0 To UBound($a) - 1
    $a[$i] = StringReplace($a[$i], '">', ' - ')
    Next

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

    _ArrayDisplay($a)

    [/autoit]
  • Ich habs so gemacht, man muss nur noch die überflüssigen Zeichen rauslöschen:

    Spoiler anzeigen
    [autoit]

    #include <Inet.au3>
    #Include <File.au3>

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

    Global $LINK[99999]
    Global $Data[99999]
    Global $LINE[99999]
    Global $ID[99999]
    Global $BRAND[99999]

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

    $FILE = @ScriptDir & "\Code.txt"
    $LINK[1] = "http://www.gtainside.com/download.php?do=cat&id=341" ;Cars
    $HTML = _INetGetSource($LINK[1])

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

    FileDelete($FILE)
    FileWrite($FILE, $HTML)

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

    $COUNT = _FileCountLines($FILE)
    For $i = 1 To $COUNT
    $LINE[$i] = FileReadLine($FILE, $i)
    Next

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

    For $i = 1 To $COUNT
    If StringInStr($LINE[$i], '<img src="gfx/dot.gif"> <a href="download.php?do=cat&id=') Then
    $ID[$i] = StringMid($LINE[$i], 57, 3)
    $BRAND[$i] = StringMid($LINE[$i], 62, 10)
    FileWrite(@ScriptDir & "\ID & Brand.txt", $ID[$i] & " ||| " & $BRAND[$i] & @CRLF)
    ;~ ConsoleWrite($BRAND & " - " & $ID & @LF)
    EndIf
    Next

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


    Die Txt Datei sieht dann so aus:

    Spoiler anzeigen

    426 ||| Acura</a>
    411 ||| Alfa Romeo
    410 ||| Aston Mart
    403 ||| Audi</a> (
    382 ||| BMW</a> (1
    406 ||| Bugatti</a
    431 ||| Busse</a>
    377 ||| Cadillac</
    442 ||| Caterham</
    390 ||| Chevrolet<
    378 ||| Chrysler</
    408 ||| Dacia</a>
    444 ||| Daewoo</a>
    402 ||| Dodge</a>
    394 ||| Ferrari</a
    420 ||| Fiat</a> (
    388 ||| Ford</a> (
    441 ||| FSO</a> (2
    432 ||| GAZ</a> (1
    440 ||| GMC</a> (1
    398 ||| Honda</a>
    407 ||| Hummer</a>
    421 ||| Hyundai</a
    389 ||| Koenigsegg
    380 ||| Lamborghin
    397 ||| Lancia</a>
    434 ||| Land Rover
    427 ||| Landwirtsc
    413 ||| Lexus</a>
    391 ||| Mazda</a>
    436 ||| McLaren</a
    372 ||| Mercedes B
    418 ||| Mini</a> (
    392 ||| Mitsubishi
    405 ||| Moskwitch<
    379 ||| Nissan</a>
    425 ||| Opel</a> (
    430 ||| Pagani</a>
    416 ||| Peugeot</a
    396 ||| Plymouth</
    371 ||| Polizei</a
    375 ||| Pontiac</a
    395 ||| Porsche</a
    409 ||| Renault</a
    424 ||| Rolls Royc
    438 ||| Saleen</a>
    419 ||| Seat</a> (
    428 ||| Shelby</a>
    429 ||| Smart</a>
    370 ||| Sonstiges<
    393 ||| Spaß -Fahr
    374 ||| Subaru</a>
    342 ||| Texturen</
    435 ||| Tofas</a>
    376 ||| Toyota</a>
    373 ||| Trucks</a>
    412 ||| UAZ</a> (1
    381 ||| Vaz</a> (3
    383 ||| Volkswagen
    417 ||| Volvo</a>

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    #include <File.au3>
    #include <Inet.au3>

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

    Global $LINK[99999]
    Global $Data[99999]
    Global $LINE[99999]

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

    $TEMP = @ScriptDir & "\TEMP"
    $LINK[1] = "http://www.gtainside.com/download.php?do=cat&id=341" ;Cars
    $HTML = _INetGetSource($LINK[1])

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

    $test= _StringBetween($HTML,'<img src="gfx/dot.gif"> <a href="download.php?do=cat&id=','<BR>')
    For $i = 0 To Ubound($test) -1

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

    $ID = StringLeft($Test[$i],3)
    $Start=StringInStr($Test[$i],">")
    $End=StringInStr($Test[$i],"<")
    $BRAND = StringMid($Test[$i], $start + 1,$End -6)
    ConsoleWrite($BRAND & " - " & $ID & @LF)
    Next

    [/autoit]
  • hey..danke euch dreien...die von funkey und raupi gefallen mir..genau so hab ich mir das vorgestellt...

    @Aqua .. das problem ist halt bei deiner Variante dass bei längeren namen einfach abgeschnitten wird und die klammern noch da stehen...

    super jetz kann ich sofort weiter machen...

    • Offizieller Beitrag

    Mit StringRegExp ist es einfacher:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Inet.au3>
    Global $LINK[99999]
    $LINK[1] = "http://www.gtainside.com/download.php?do=cat&id=341" ;Cars
    $HTML = _INetGetSource($LINK[1])
    $aCars = StringRegExp($HTML, '<img src="gfx/dot.gif"> <a href="download.php\?do=cat\&id=(\d+)">(.+)</a>', 3)
    _ArrayDisplay($aCars)

    [/autoit]