Bestimmte Internetlinks automatisch anklicken lassen

  • Guten Morgen,

    ich brauche mal Eure Hilfe, da ich vor folgendem Problem stehe und ich noch nicht wirklich gut auskenne mit Autoit in Verbindung mit Internetautmatisierung.
    Ich muss mich auf einer Internetseite anmelden. Das würde ich eventuell von Hand machen, ich habe schon rausgefunden, das POST und nicht GET verwendet wird.
    Dort gibt es dann sehr viele Internetlinks untereinander, welche 1 mal angeklickt werden müssen. Anbei mal ein Ausschnitt des Quelltextes:
    Am Ende kommt dann der nächste Firmenname. Es stellt sich mir hierbei die Frage, wie ich hier vorgehe, was alles zu beachten ist, z.B. die Ladedauer abwarten usw.
    Ich würde vermutlich mal die Strings in ein Array schreiben und dann arbeiten lassen. Aber woher weiss mein Script, das ich nur die Links zwischen dem ersten und zweiten <h2> nehmen darf.
    Soll ich hier besser die IE.au3 oder Winhttp.au3 nehmen. Gibt es Erfahrungen mit der FF.au3 mit Firefox 22.0 ? Geht das noch ?
    Momentan denke ich wäre vermutlich "_IELinkClickByText" aus der IE.au3 der Befehl der hier zum Einsatz kommt.

    Spoiler anzeigen
  • Hi,

    ich hab die ganzen Links immer extrahiert und in einer txt abgelegt, von dort aus dann jeden Einzelnen aufgerufen und die entsprechenden Infos raus geholt (mit _InetGetSource() und mit _StringBetween() gearbeitet).

    So mach ich das bis heute, das funktioniert eigentlich am Besten :)

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Aber nicht die eigene _StringBetween-Funktion ;)

    Alternativ steht auch die Möglichkeit per _WinHTTP zur Verfügung.
    Damit kann man ebenfalls Source-Code abgreifen und Anfragen an Websites senden, was in diesem Fall der Link wäre.
    Ich persönlich benutz die IE.au3 eher weniger, da es einfacher ist mit TCPSend/TCPRecv-Packets zu arbeiten oder noch einfach per _WinHTTP was aber langsamer ist.

  • Ich persönlich benutz die IE.au3 eher weniger, da es einfacher ist mit TCPSend/TCPRecv-Packets zu arbeiten

    Für dich vielleicht - aber nicht für einen absoluten Anfänger auf diesem Gebiet?! ;)
    Ich empfehle dir, es einfach mal mit Hilfe der Internet-Explorer-UDF zu versuchen, denn ALLES was du von Hand im IE tun könntest kannst du mit Hilfe der UDF auch erledigen lassen. (Selbst den Login) Und falls die Frage nach einem Tutorial aufkommen sollte: siehe Autoitbot.de Jaa ich habe den "Namen der nicht genannt werden darf" ausgeschrieben, aber eins müsst ihr 'ihnen' lassen: IE-Automation können sie/wir... :whistling:

    LG
    Christoph :)

  • Guten Morgen zusammen,

    so ich hatte jetzt ein paar Tage Zeit und bin ein wenig weiter. Hatte erst mit Winhttp Versuche gestartet, jedoch war ich hierbei mit der POST Methode beim Login erfolglos. Bin jetzt aktuell mit der IE.au3 unterwegs und habe den Login erfolgreich umgesetzt. Aktuell habe ich die Links in einer Textdatei, jedoch kommen jetzt weitere Fragen hoch

    1. In der Hilfe unter _IELinkClick*** steht immer, das ein Mausklick "simuliert" wird. Wird dann einer meiner Links real angeklickt, oder nicht ?
    2. Oder soll / muss man hier mit _IENavigate arbeiten ?

  • Simuliert vermutlich deshalb weil nicht mit der Maus über den Link gefahren und dann ein Klick ausgeführt wird, sondern weil es im Hintergrund abläuft.
    Trotzdem wird der Link angeklickt. Sonst gäbe die Funktion ja auch keinen Sinn...

  • Also ich habe es jetzt trotzdem mit _IENavigate gemacht, und das klappt auch ganz gut.

    Jetzt brauche ich aber nochmals Eure Hilfe, da ich mich gerade mit dem Quellcode etwas schwer tue.

    Erst mal das Beispiel aus der Hilfe

    [autoit]


    #include <IE.au3>
    Local $oIE = _IECreate("http://www.google.com")
    Local $oForm = _IEFormGetObjByName($oIE, "f")
    Local $oQuery = _IEFormElementGetObjByName($oForm, "q")
    _IEFormElementSetValue($oQuery, "AutoIt IE.au3")
    _IEFormSubmit($oForm)

    [/autoit]


    und hier mal mein Quellcode

    Spoiler anzeigen


    am Beispiel von Google (Zeile 4 im Beispiel Code) suche ich in meinem Quelltext ja den Wert name="leanv_form_closemain" aus Zeile 41

    Mein Problem ist jedoch Zeile 3 aus dem Google Beispiel.
    Ich muss ja erst mal die "Form" ausfindig machen, habe hier aber gerade keinen Plan mit welchem Befehl ich "was" abfragen muss.
    Im Endeffekt muss ich einen Mausklick auf "Abbrechen" durchführen

    Kleiner Nachtrag:
    Ich habe noch ein großes Problem. Wenn ich auf die Seite via _IENavigate komme, wird automatisch eine XML Datei gestartet zum herunterladen.
    Es öffnet sich im IE 10 ein iFrame mit den bekannten Optionen Speichern, Speicher unter, usw.
    Eigentlich würde es reichen, die Maus auf einer Koordinate klicken zu lassen. Jedoch steht ab dem Erscheinen dieser Speicheroptionen da Script, d.h. wenn ich von Hand auf speichern klicke, fährt kurze Zeit später die "Autoit" Maus an die Koordinate.
    Anbei mal der Inhalt von Autoit Info. Wie kann ich das den lösen ?

    Spoiler anzeigen

    Nachtrag gelöst: Es lag daran, das ich beim _IENavigate mit 1 gewartet hatte, bis die Seite geladen ist. Mit 0 geht es ohne Probleme

    2 Mal editiert, zuletzt von HassanMullah (26. Juli 2013 um 14:10)