Wert aus dem Internet Explorer auslesen?

  • Hallo

    Ich hab jetzt schon stundenlang Google nach einer Lösung durchsucht aber ich habe keinen Erfolg...

    Ich habe vor eine eine Zahl aus dem Internet Explorer auszulesen und sie als Variable zu benutzen. Gemeint ist eine ganz normale Zahl die sich ändern. Ich möchte die so in der Schleife übernehmen das solange diese Zahl geprüft wird bis sie kleiner ist als 1 sprich = 0 und dann soll die schleife verlassen werden und die nächste aktion durchgeführt werden.

    Leider bin ich nicht so der programmier profi aber meine bisherige lösung war einfach mit _IEDocReadHTML($oIE) denn Quellcode der Seite auszulesen und dann mit FileWrite in eine Textdatei zu speichern. Ich wollte dann immer mit den Befehlen:

    $opensource = FileOpen("source.txt", 0)
    $left_line = String(FileReadLine($opensource, 440))
    $left_numb = StringMid($left_line , 72, 1)

    Die Zahl auslesen. Das hat auch immer wunderbar geklappt. Das Problem ist aber wenn ich in der While - WEnd schleife den Quelltext erneut auslesen will dann bricht er aus irgenteinem grund die Schleife ab. Nächstes Problem liegt darin das ja immer der Text beim FileWrite am ENDE der Datei gespeichert wird. Somit stimmen ja die Zeilenzahlen für String(FileReadLine($opensource, 440)) usw nicht mehr.

    Ist das vielleicht sogar irgentwie einfacher möglich? Die Zahl steht immer an der selben stelle. Ändert sich aber halt von 0-3... und diese Zahlen sollen überwacht werden. Achja noch etwas zu erwähnen, _INetGetSource funktioniert hier NICHT da hier mit einem Login gearbeitet wird und _INetGetSource ja direkt selber auf die Seite zugreift. Die Zahl muss also irgentwie aus dem aktiven IE Fenster ausgelesen werden oder halt doch irgentwie über den Quelltext.

    Ich hab auch schon versucht mit IniWrite("source.ini", "section2", "key", $test), aber da ist irgentwie das selbe problem wie mit der txt datei, der neue inhalt wird immer NACH dem aktuellen werd geschrieben und somit stimmen die Zeilenzahlen dann nicht und mit jeden Loop nimmt die Dateigröße zu was auch nicht sein soll.

    Ich hoffe mir kann jemand helfen!
    Vielen Dank im vorraus... Mfg SniperWolf

  • so geht das viel einfacher:

    [autoit]

    $oIE = _IECreate(deine seite, 0, 0)

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

    $Read = _IEBodyReadText($oIE)
    $Text = StringSplit($Read, @CRLF)

    [/autoit]

    dann haste in $Text[1] die erste linie in $Text[2] die zweite und so weiter.
    so sollte das auch zu aktualisieren sein.

    0, 0 bei _IECreate(...) damit die seite unsichtbar ist. kanste aber auch weglassen dann sieht man sie halt

    ich hoffe das hilft dir.

    Einmal editiert, zuletzt von Dustin (2. Juni 2007 um 17:28)

  • hello und welcome im forum =)
    wie du schon festgestell hast kannste nicht mit _INetGetSource arbeiten...richtig verwendeste hier schon _IEDocReadHTML($oIE)...abe warum speichest den quelltext erst in einer datei, ließt die datei dann aus und verarbeitest den quelltext???????????????? ist unlogisch kannst doch sofort den quelltext der in der variable steht verarbeiten!!!
    hiermal ein beispiel was dein problem beheben könnte:
    muss nur angepasst werden....

    [autoit]

    Global $html_source
    #include<IE.au3>
    $oIE = _IECreate("counter.de")
    ;nehmen wir an auf counter.de wird eine zahl(5) runtergezählt und wir wollen solange warten bis dort login(0) steht....
    Do
    $html_source = _IEDocReadHTML($oIE)
    Until StringInStr($html_source,"login",1)

    [/autoit]


    jedenfalls sowas in der art...


    snoozer

  • Vielen Dank :D

    Also ich hab mit beiden bisher gesagten Varianten Probleme....

    Als erstes mal die von Dustin:

    [autoit]


    $oIE = _IECreate(deine seite, 0, 0)

    $Read = _IEBodyReadText($oIE)
    $Text = StringSplit($Read, @CRLF)

    [/autoit]

    Von der Idee her und alles nicht schlecht und es funktioniert auch FAST. Bei IEBodyReadText scheint er ja nur Textzeilen auszulesen. Das funktioniert aber leider immer nur mit Zeile 1, sprich wenn ich $Text[1] ausgebe. bei $Text[2] krieg ich keinen Inhalt zurück. Ich habe auch _IEBodyReadHTML ausprobiert wo er wohl wieder versucht die zeilen des Quelltextes auszugeben der zwischen <body> steht. Funktioniert soweit auch ABER das Problem ist das die Seite bzw der Quelltext so groß ist das im die ausgabe als $Text[429] zu hoch ist! Dort bekomme ich die Fehlermeldung:

    Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.


    Nun zu der Sache von snoozer - Die Methode funktioniert schonmal so wie ich es mir vorstelle. ABER besteht hier das Problem das ich die Zahl nicht als Variable übernehmen kann. Wenn ich das Prinzip von deiner Methode richtig verstanden hab wird solange das HTML Dokument durchsucht bis der gesuchte Begriff auf der Seite erscheint (bei dir "login"). Das Funktioniert ja auch aber wie gesagt hab ich dadurch nicht die Zahl der noch übrigen Domains zur verfügung. Also die HTML Zeile die ich meine sieht so aus im Quelltext:

    Zitat

    429 - <td class="text1" width="25" height="15" align="right"><span class="rote"><b>2</b></span>&nbsp;</td>
    430 - <td class="text1" width="180" height="15">Domains frei</td>

    (Die nummern davor sind die Zeilennummern)

    Wie gesagt die 2 die dort zwischen <b> steht wird von 3 runtergezählt auf 0 (Bei 0 steht dann das Wort "Keine" da). Aber wie gesagt möchte ich die Zahl der noch übrigen Domains als Variable haben damit ich sie z.B. auch in MsgBoxen oder GUI's ausgeben kann.

    Vielen Dank schonmal für die Antworten! Ich hoffe ihr könnt mir noch weiter helfen!!

    MFG SniperWolf

  • so könnte die lösung dann sein:

    Spoiler anzeigen
    [autoit]

    #include<IE.au3>
    #include<String.au3>
    $oIE = _IECreate(deine seite, 0, 0)
    $Read = _IEBodyReadText($oIE)
    $gesuchteZahl=_StringBetween($Read='"rote"><b>','</b></span>')

    [/autoit]

    gruss exberliner