Alle Links einer Website auslesen?

  • Ich suche eine Möglichkeit alle Links aus einer webseite auszulesen!

    Mein Gedanke war, die seite Mittels InetGet($URL,0) herunterzuladen und dann mit _StringBetween alle links manuelle auszuschneiden
    (Sind immer die selben seiten, mit selbem Gerüst)

    Hoffe das ich net komplett falsch lag!

    Für Eure Ideen wäre ich sehr dankbar.

    Greetz Sorcerer

  • Ich hätte dir jetzt genau das gleiche vorgeschlagen.
    Sicherlich gibt es mit StringRegExp() "professionellere" lösungen, aber RegExp is für mich reinstes Kauderwelsch...
    Also entweder den quelltext mit InetGet holen, oder per IE.au3 und dann einfach

    [autoit]


    #include <IE.au3>
    #include <String.au3>
    #include <Array.au3>
    $oIE = _IECreate("http://de.wikipedia.org/wiki/Wikipedia:Hauptseite")
    _IELoadWait($oIE)
    $oHtml = _IEBodyReadHtml($oIE)
    $oLinks = _StringBetween($oHtml,'<a href="','"')
    _ArrayDisplay($oLinks)

    [/autoit]


    Wenn es immer der selbe Seitenaufbau ist, müssten eventuelle "Falschmeldungen" wie in meinem beispiel die ersten beiden im Array, ja auch immer die selben sein, und sich ganz leicht rausfiltern lassen ;)

    Gruß

  • Hätte nicht gedacht das um die Uhrzeit noch jemand anderes online gewesen wäre aber deine Lösung ist SPITZE!

    Weiss noch net ob ichs, wenns fertig ist hier reinstelle, da es evtl teilweise gegen regeln verstößt xD

    Falls ich noch probleme bei der umsetzung habe, dann melde ich mich bei dir!

    Greetz Sorcerer

  • Das bringt mehr Ergebnisse.

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    #include <Array.au3>

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

    $oIE = _IECreate("www.google.at")

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

    $oLinks = _IELinkGetCollection($oIE)
    Local $i = 0, $aLinks[@extended]

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

    For $oLink In $oLinks
    $aLinks[$i] = $oLink.href
    $i += 1
    Next

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

    _ArrayDisplay($aLinks)

    [/autoit]
  • Die erste Lösung hat alle Links gefunden die ich finden wollte :D
    Deine Lösung werd ich bei Bedarf auch noch ausprobieren (bei anderen seiten)

    Ich hätte auch noch eine andere frage, denn ich will ein background image setzen, welches für GUICreate() gilt.
    Denn in der Hilfe Datei steht drin, das man eine ControlID braucht, welche GUICreate ja net zurück gibt.

    Jemand eine Ahnung wie ich das bild trotzdem dort hinein bekomme?

    Gruß und danke für die Hilfe!

  • Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    GUICreate("Beispiel",800,600)
    GUISetState()
    GUICtrlCreatePic(@ScriptDir&"\filmstreifen.jpg",0,0,800,600)
    GUICtrlSetState(-1,$GUI_DISABLE) ; wichtig, damit man den button klicken kann
    GUICtrlCreateButton("Hallo",200,200,200,25)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    sleep(10)
    WEnd

    [/autoit]

    filmstreifen.jpg einfach durch eine jpg ersetzen die du grade da hast