IE Links auslesen und weitersurfen...

  • Hallo,

    ich suche einen Codeschnippsel der mir bei folgender Aufgabenstellung hilft.
    #1 Erfasse im IE mit Autoit alle Links auf der dir angezeigten Seite
    #2 Erfasse nur Links der "gleichen" Rootdomain
    #3 Klicke mit der von Autoit gesteuerten Maus auf Testseeite3 den dritten Rootdomainlink

    Also entweder ich habe ein Brett vor dem Kopf oder man kann diese Aufgabe nicht mit Autoit lösen.
    #1 Könnte man durch das Abspeichern des Quelltextes lösen.

    [autoit]

    #include <IE.au3>
    $URL = "http://autoitkurs.hwk-do.de/2013/Aufgabe3/"
    $IE = _IECreate($URL)
    $HTML = _IEDocReadHTML($IE)
    FileWrite("Test.txt",$HTML)

    [/autoit]


    In dem dann wiederum gesucht wird, und das Ergebnis in ein Array geschrieben.
    #2 Ein einfaches Aussortieren der nicht Rootbeinhaltenden Strings im Array
    #3 Keine Ahnung, wie soll ich denn jetzt die Postition des Links finden!?

    • Offizieller Beitrag

    Ich würde den HTML-Quelltext lieber mit InetRead auslesen und mit StringRegExp auswerten.
    So bekommst Du alle Links der Seite und dann die Links der Unterseiten:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $sURL = "www.t-online.de"
    $aLinks = _ReadLinks($sURL, $sURL)
    _ArrayDisplay($aLinks)
    For $i = 0 To 2 ; <- Test oder halt: UBound($aLinks) - 1
    $aSubLinks = _ReadLinks($aLinks[$i], $sURL)
    _ArrayDisplay($aSubLinks)
    Next

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

    Func _ReadLinks($sSubURL, $sURL)
    Local $sHTML = BinaryToString(InetRead('http://' & $sSubURL))
    Local $aLinks = StringRegExp($sHTML, $sURL & '\S+?\.html', 3)
    Return $aLinks
    EndFunc

    [/autoit]


    Wenn Dich der Inhalt der jeweiligen Seite interessiert, dann mit:

    [autoit]

    BinaryToString(InetRead($sURL))

    [/autoit]


    auslesen.

  • Ah ich habe da etwas gefunden. Die aufgezählten Portale haben keine .html Endung sondern Verzeichnisse.
    Für den StringRegEXP ist der folgende Filter wohl etwas zu grob:

    [autoit]

    'href="(.*)/"(.*)>(.*)</a>'

    [/autoit]


    So habe ich dann ggf. noch die Alt Tags, sowie die Titel mit im Array. Die Titel in einem Multiarray wären ja super alla |URL|Title| denn dann kann ich mit der '_IELinkClickByText' wunderbar weiter arbeiten...

    Die Frage ist nur wie der Filter so gut Arbeiten könnte?

  • Hallo Oscar,

    ich habe mir gerade unsere HWK Testseite angeschaut. Folgende Linkarten habe ich gefunden:
    <a href="http://autoitkurs.hwk-do.de/2013/Aufgabe1/" alt="Autoit Kurs1">Autoit Aufgabe 1</a>
    <a href="http://autoitkurs.hwk-do.de/2013/Aufgabe2/" title="Autoit Kurs2" class="btn btn-primary btn-large">Mehr zur 2 Frage</a>
    <a href="http://autoitkurs.hwk-do.de/2013/Aufgabe2/" title="Autoit Kurs6">Kurs 6</a>