Mehrere Seiten auf einmal downloaden

  • Hallo, ich möchte gerne mehrere Seiten auf einmal downloaden, das heißt wenn ich z.B. 10 Profile habe, sollen diese Gleichzeitig gedownloadet werden und nicht nacheinander. Weil ein Profilaufruf ca 5 Sekunden verbucht und nacheinander es somit dann 50 Sekunden wären.

    [autoit]


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

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

    ; Aufruf der ersten Profil Seite
    $link_part1 ='/portal/site/cnc//stats?persona=CC_SUB:'
    $nickname = 'Mustermann'
    $resource = $link_part1 & $nickname

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

    $open = _WinHttpOpen("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15")
    $connect = _WinHttpConnect($open,"portal.commandandconquer.com" )
    $request = _WinHttpOpenRequest($connect, "GET", $resource, "HTTP/1.1", "portal.commandandconquer.com" )
    _WinHttpSendRequest($request)

    If _WinHttpReceiveResponse($request) Then
    $HtmLSourceCode = _WinHttpReadData($request, 0, 34000) ; 34.000 kb ist 1/5 der Webseite
    _WinHttpCloseHandle($request)
    EndIf

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

    ; Alle Nicknamen mit einer Regex ermitteln
    $aArrayRegExWithSmurfsInside = StringRegExp($HtmLSourceCode,'.portal.site.cnc..stats.*persona.CC.SUB.3a(.*).game.', 3)
    ; Anzahl der gefundenen Nicknamen
    $aQuantity = ubound($aArrayRegExWithSmurfsInside)

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



    $aArrayQuantity = $aQuantity-1
    For $i = 0 to $aArrayQuantity Step 1

    $link_part1 ='/portal/site/cnc//stats?persona=CC_SUB:'
    $resource = $link_part1 & $aArrayRegExWithSmurfsInside[$i]

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

    $open = _WinHttpOpen("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15")
    $connect = _WinHttpConnect($open,"portal.commandandconquer.com" )
    $request = _WinHttpOpenRequest($connect, "GET", $resource, "HTTP/1.1", "portal.commandandconquer.com" )
    _WinHttpSendRequest($request)

    If _WinHttpReceiveResponse($request) Then
    $HtmLSourceCode = _WinHttpReadData($request, 0, 34000) ; 34.000 kb ist 1/5 der Webseite
    _WinHttpCloseHandle($request)
    EndIf
    Next

    [/autoit]


    Mit Firefox kann ich jene 10 Seiten innerhalb von Sekunden dowloaden, aber wie geht das mit Autoit ?
    Dazu dachte ich, das ich jeden request in einem array ablege muß, was bei mir als anfänger aber noch nicht funktionierte.


    [autoit]

    $aArrayQuantity = $aQuantity-1
    For $i = 0 to $aArrayQuantity Step 1

    Dim $aRequest[$aArrayQuantity]
    Dim $aHtmlSourceCode[$aArrayQuantity]

    $link_part1 ='/portal/site/cnc//stats?persona=CC_SUB:'
    $resource = $link_part1 & $aArrayRegExWithSmurfsInside[$i]

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

    $open = _WinHttpOpen("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15")
    $connect = _WinHttpConnect($open,"portal.commandandconquer.com" )
    ;Zeile (13) : ==> Subscript used with non-Array variable
    $request[$i] = _WinHttpOpenRequest($connect, "GET", $resource, "HTTP/1.1", "portal.commandandconquer.com" )
    _WinHttpSendRequest($request[$i])

    If _WinHttpReceiveResponse($request[$i]) Then
    $aHtmLSourceCode[$i] = _WinHttpReadData($request[$i], 0, 34000) ; 34.000 kb ist 1/5 der Webseite
    _WinHttpCloseHandle($request[$i])
    EndIf
    Next

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

    Und auch wenn ich jetzt jeden request bereits in nen array drinn hätte, müßte ich ja noch
    anschließend

    Code
    _WinHttpReadData($request[$i], 0, 34000)

    ausführen, so das das Script 10 Seiten auf einmal downloadet und nicht nacheinander.

    Ich hoffe mir kann hier jemand weiterhelfen :)

  • Die Sache ist die, das jeder Account bis zu 20 Profile haben kann. Und die möchte ich auslesen, damit ich weiß mit wem ich es zu tun habe. Wie hier z.B.
    Das heißt, ich will nicht alle registrierte Accounts der Webseite auslesen, sondern alle Benutzerprofile die zu einem Account gehören auslesen!

  • Hallo John,

    schau dir InetGet an.

    @All: Da davon auszugehen ist dass diese Website (genau wie die Mehrheit üblicherweise auch) etwas dagegen hat dass Profile "automatisiert" abgerufen werden bitte ich:

    @All keinen weiteren Support zu leisten.

    danke autoBert