Textstelle herausfiltern + Link drücken

  • Hallo :)
    Ich bräuchte hilfe bei einer kleinen Sache.
    Ich möchte gerne in mein Script schreiben, dass er auf den Link : Hier : drücken soll.
    Kein problem...
    Dies habe ich mit _IENavigate gemacht.
    Doch das problem ist, ich möchte das er nur diesen einen Link von 1000 aufruft und sonstige , die auf der seite sind weglässt.
    So sieht es aus :
    Um diesen Downloadlink zu bestätigen müssen sie Hier drücken.
    Danach bitte Hier.
    Es sind 2 Urls mit dem Wort Hier und das Script soll dann auf die Textstellen davor achten: z.B.
    : müssen sieHier drücken :
    Er soll dann nur den Url link Hier andrücken wo auch diese Textstellen davor sind
    Wäre schön wenn mir jemand helfen könnte =)
    Mfg :S

  • Es würde helfen, wenn du die Webseite verrätst.
    Prinzipiell:

    [autoit]


    #include <IE.au3>
    #include <INet.au3>
    #include <String.au3>
    ; ...
    $code=_InetGetSource("http://seite.com/unterseite/bla")
    $pos=StringInStr($code,"bestätigen müssen sie")
    $newstring=StringTrimLeft($code,$pos)
    $link1=_StringBetween($code,'href="','"')
    $pos=StringInStr($code,"Danach bitte")
    $newstring=StringTrimLeft($code,$pos)
    $link2=_StringBetween($code,'href="','"')
    _IENavigate($link1)
    _IELoadWait()
    _IENavigate($link1)
    _IELoadWait()

    [/autoit]


    Ist aber ungetestet, da ich die Seite nicht kenne.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Moin,

    ja, ein wenig HTML-Quelltext für die relevanten Stellen wäre nicht schlecht ... ;)

    So bringt es wohl nicht viel, aber trotzdem ...

    [autoit]


    #include <Array.au3>

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

    $sLinkText = 'Um diesen Downloadlink zu bestätigen müssen sie Hier drücken, um ..., ansonsten müssen sie Hier drücken, um ...'

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

    $ptnLinkText = '(?:müssen sie )(.*?)(?: drücken)'
    $asLinkText = StringRegExp ($sLinkText, $ptnLinkText, 3)
    ; Wenn Suchtext gefunden ...
    If (IsArray ($asLinkText)) Then _
    _ArrayDisplay ($asLinkText)

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


    Mit dem HTML-Quelltext könnte ich dir den Link herausfischen, aber so ...


    LG
    Greenhorn


  • Achso, was ich noch sagen wollte.
    Ich möchte keine Url eintragen sondern:

    [autoit]

    _IELinkClickByText ( $oIE, "Hier")

    [/autoit]


    er soll es halt herausfischen :/

  • Ich hab noch nicht so viel mit den _IE-Funktionen gearbeitet, aber kannst du dann nicht einfach

    [autoit]


    _IELinkClickByText ( $oIE, "Hier",1)
    _IELinkClickByText ( $oIE, "Hier",2)

    [/autoit]


    schreiben?

    Zitat

    $i_index Optional: If the link text occurs more than once, specify which instance you want by 0-based index

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • [autoit]

    #include <Array.au3>

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

    $sLinkText = 'Um diesen Downloadlink zu bestätigen müssen sie Hier drücken, um ..., ansonsten müssen sie Hier drücken, um ...'
    ; Den Suchtext finden und daraus nur "Hier" zurückgeben.
    $ptnLinkText = '(?:müssen sie )(Hier)(?: drücken)'
    $asLinkText = StringRegExp ($sLinkText, $ptnLinkText, 3)
    ; Wenn Suchtext gefunden ...
    If (IsArray ($asLinkText)) Then _
    _ArrayDisplay ($asLinkText)

    [/autoit]


  • Stimmt das hier so?

    [autoit]

    While 1

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

    _IENavigate ($oIE, "http://german-diablo-players.de/downloads.php")
    Sleep(4900)
    $sLinkText = 'Um den Downloadlink zu starten, drücken sie bitte Hier'
    ; Den Suchtext finden und daraus nur "Hier" zurückgeben.
    $ptnLinkText = '(?:Um den Downloadlink zu starten, drücken sie bitte (Hier)(?:)'
    $asLinkText = StringRegExp ($sLinkText, $ptnLinkText, 3)
    ; Wenn Suchtext gefunden ...
    If (IsArray ($asLinkText)) Then _
    _ArrayDisplay ($asLinkText)

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

    Wend

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Nicht ganz, eine Klammer vergessen ... ;)

    [autoit]

    $ptnLinkText = '(?:Um den Downloadlink zu starten, drücken sie bitte )(Hier)'

    [/autoit]


    EDIT:
    Und den Rest brauchst Du auch nicht, wenn dem nichts mehr folgt ...
    Und sLinkText muss natürlich der Seiteninhalt sein ... ;)

    LG
    Greenhorn


    Einmal editiert, zuletzt von Greenhorn (25. Februar 2009 um 19:53)

  • korrigiert^^
    geht aber leider nicht

    [autoit]

    While 1
    Sleep(4900)

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

    $sLinkText = 'http://german-diablo-players.de/downloads.php'
    ; Den Suchtext finden und daraus nur "Hier" zurückgeben.
    $ptnLinkText = '(?:Um den Downloadlink zu starten, drücken sie bitte) (Hier)(?:)'
    $asLinkText = StringRegExp ($sLinkText, $ptnLinkText, 3)
    ; Wenn Suchtext gefunden ...
    If (IsArray ($asLinkText)) Then _
    _ArrayDisplay ($asLinkText)
    Wend

    [/autoit]


    hab noch eine andere frage und die wäre :
    bei $ptnLinkText = '(?:Um den Downloadlink zu starten, drücken sie bitte) (Hier)(?:)' ist es ja so Klammer , url , klammer
    Was ist wenn es so ist? : $ptnLinkText = '(?:Um den Downloadlink zu starten, (drücken) sie bitte) (Hier)(?:)'
    Also wenn noch eine Klammer darin ist es aber keine url ist?