Seiten durchsuchen (Webcrawler)

  • Guten Morgen.

    Ich hab mal eine Frage. Ist es möglich mehrere Seiten zu durchsuchen und anschliesend die Suchergebnisse als link ausspucken zu lassen?

    bsp: http://365psd.com/

    Diese seite möchte ich anhand eines suchbegriffes den ich eingebe durchsuchen und hinterher in einer listbox oder so die ergebnisse als links anzeigen lassen.

    Es soll eine Art PSD suchmaschine werden. Wenn möglich sogar mit mehreren seiten.


  • Ist es möglich mehrere Seiten zu durchsuchen und anschliesend die Suchergebnisse als link ausspucken zu lassen?

    Ja

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Damit gehts, ist wohl auf deine Beispielseite getrimmt, weiß nicht ob es bei anderen Seiten funktioniert ;)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    Opt("TrayIconDebug", 1)
    Global $sitearray[1]
    $Form1 = GUICreate("Webcrawler", 617, 443, 192, 124)
    $Url = GUICtrlCreateInput("http://365psd.com/", 16, 16, 265, 21)
    $searchfor = GUICtrlCreateInput("iPhone Music Player", 16, 40, 265, 21)
    $ListView1 = GUICtrlCreateListView("Url", 8, 72, 305, 361)
    _GUICtrlListView_SetColumnWidth($ListView1, 0, 300)
    $Button1 = GUICtrlCreateButton("Start", 408, 24, 185, 49, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Stop", 408, 88, 185, 49, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    ReDim $ioArray[1], $sitearray[1]
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1))
    _Crawlsite(GUICtrlRead($Url), GUICtrlRead($searchfor))
    EndSwitch
    WEnd

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

    Func _Crawlsite($Urltolookin, $search)
    $read = BinaryToString(InetRead($Urltolookin))
    If GUIGetMsg() = $Button2 Then Return 0
    If StringInStr($read, $search) <> 0 And StringInStr($Urltolookin, "/'/") = 0 Then
    _GUICtrlListView_AddItem($ListView1, $Urltolookin)
    EndIf
    $test = StringRegExp($read, "\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))", 3)
    If @error Then Return 1
    For $i = 1 To UBound($test) - 1
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $i = ' & $i & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    If GUIGetMsg() = $Button2 Then Return 0
    If StringInStr($test[$i], $Url) <> 0 And StringInStr($test[$i], "register") = 0 And StringInStr($test[$i], "login") = 0 Then
    If _ArraySearch($sitearray, $test[$i]) = -1 Then
    _ArrayAdd($sitearray, $test[$i])
    $Show = _Crawlsite($test[$i], $search)
    If $Show = 0 Then ExitLoop
    EndIf
    EndIf
    Next
    EndFunc ;==>_Crawlsite

    [/autoit]
  • bekomme diesen error

    C:\Users\Martin\Desktop\test.au3 (25) : ==> Variable used without being declared.:
    ReDim $ioArray[1], $sitearray[1]
    ReDim ^ ERROR
    >Exit code: 1 Time: 5.845

  • lösch aus der entsprechenden Zeile bitte

    [autoit]

    $ioArray[1],

    [/autoit]

    dann sollte es klappen

  • Ok es klappt. jedoch listet er mir alle seiten auf die 365psd hat lol. Ich möchte aber nur die seiten auflisten wo z.B dieser suchbegriff vorkommt. und wie kann ich die links so machen das sich beim klicken der browser öffnet mit dem entsprechenden url?

    EDIT: das mit dem suchbegriff liegt daran das es sozusagen 3 keywords sind Iphone Music Player daher listet er mir alles auf^^ mit einem anderen suchbegriff listet er nur 3-4 seiten auf

  • Jein ;)

    Iphone Music Player hab ich einfach so genommen, weil ichs auf der Startseite gesehen habe.
    Es ist aber auch auf den anderen Seiten, da das Wort im Footer steht.

    Es wird immer das ganze Wort gesucht, was eingegeben wird, auch "Iphone Music Player" wird komplett gesucht, Wenn auf einer Seite "Iphone Music" stehen würde, würde es nicht gefunden.

  • Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    Opt("TrayIconDebug", 1)
    Global $sitearray[1]
    $Form1 = GUICreate("Webcrawler", 617, 443, 192, 124)
    $urlfront = GUICtrlCreateCombo("http://", 16, 16, 80, 21)
    GUICtrlSetData(-1, "http://www.", "http://") ; add other item snd set a new default
    $Urlmid = GUICtrlCreateInput("365psd.com", 96, 16, 185, 21)
    $searchfor = GUICtrlCreateInput("iPhone Music Player", 16, 40, 265, 21)
    $ListView1 = GUICtrlCreateListView("Url", 8, 72, 305, 361)
    _GUICtrlListView_SetColumnWidth($ListView1, 0, 300)
    $Button1 = GUICtrlCreateButton("Start", 408, 24, 185, 49, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Stop", 408, 88, 185, 49, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    ReDim $sitearray[1]
    $Url = GUICtrlRead($Urlmid)
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1))
    _Crawlsite(GUICtrlRead($urlfront)&GUICtrlRead($Urlmid), GUICtrlRead($searchfor))
    EndSwitch
    WEnd

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

    Func _Crawlsite($Urltolookin, $search)
    $read = BinaryToString(InetRead($Urltolookin))
    If GUIGetMsg() = $Button2 Then Return 0
    If StringInStr($read, $search) <> 0 And StringInStr($Urltolookin, "/'/") = 0 Then
    _GUICtrlListView_AddItem($ListView1, $Urltolookin)
    EndIf
    $test = StringRegExp($read, "\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))", 3)
    If @error Then Return 1
    For $i = 1 To UBound($test) - 1
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $i = ' & $i & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    If GUIGetMsg() = $Button2 Then Return 0
    If StringInStr($test[$i], $Url) <> 0 And StringInStr($test[$i], "register") = 0 And StringInStr($test[$i], "login") = 0 Then
    If _ArraySearch($sitearray, $test[$i]) = -1 Then
    _ArrayAdd($sitearray, $test[$i])
    $Show = _Crawlsite($test[$i], $search)
    If $Show = 0 Then ExitLoop
    EndIf
    EndIf
    Next
    EndFunc ;==>_Crawlsite

    [/autoit]