Bitte um Hilfe bezüglich Text in Webseite lesen =)

  • Hi!

    Ein Freund hat mich gebeten zu fragen, ob es möglich ist, bei seinen Online Games ein Script zu erstellen, ob genug zb Metall vorhanden ist um zb eine Rakete zu bauen!

    Ich würde also gerne eine If anweisung machen :schild4:

    Der sinn ist, dass er auf einem ganz neuen Universum (oh-gamee oder so heisst das Spiel?!) ist, schnell gut werden will und damit er während er in Der Schule ist besser wird ;) *cheating*^^

    Das sieht zb so aus:


    Metall Kristall Deuterium Energie

    2999 292849 28388 28393

    Nun soll er , die seite alle 10 Minuten aktualisieren, was sich per Mausklick einfach realisieren lässt ;)


    Sobald es aber so aussieht:


    Metall Kristall Deuterium Energie

    3000 292849 28388 28393


    Soll er wo hinklicken ;)

    Nur wie bringe ich das Script dazu zu prüfen, ob da bei Metall 3000 steht?


    Wär toll wenn mir jemand helfen kann ;)

  • Zitat

    Original von peethebee
    mit der IE.au3 den Quelltext holen und daraus mit RegExp den Wert.

    peethebee


    Und jetzt nochmal auf hochdeutsch, bitte^^

    Kleine anleitung wäre nett :musik2:

  • Danke, nur könntest du mir vll ein Beispiel geben wie ich das praktisch ausführe?

    Ie.au3 ist neuland :tier:


    thx :engel1:

  • Zitat

    Original von huggy
    Danke, nur könntest du mir vll ein Beispiel geben wie ich das praktisch ausführe?

    Ie.au3 ist neuland :tier:


    thx :engel1:


    hallo
    ich habe da ein Script über googel

    [autoit]

    ;Automatische Googel suche
    ; von w0uter

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

    $googel = _Google("autoit",15)
    MsgBox (0,"googelzahl",$googel[0])

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

    Func _Google($s_q,$anzahl=10)

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

    ;locals
    Local $s_temp, $s_IE, $o_IE, $as_ret = ''

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

    $o_IE = ObjCreate ("InternetExplorer.Application")
    $o_IE.Navigate ('http://www.google.de/search?q=' & $s_q& '&num='&$anzahl)
    While $o_IE.busy
    Sleep(10)
    WEnd
    $s_IE = $o_IE.document.body.innerHTML
    $s_IE = StringRegExp($s_IE, "<A(.*?)>", 3)

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

    For $i_count = 0 To UBound($s_IE) - 1
    $s_temp = StringLeft($s_IE[$i_count], StringInStr($s_IE[$i_count], '"', 0, -1) - 1)
    $s_temp = StringReplace(StringTrimLeft($s_temp, StringInStr($s_temp, '"', 0, -1)), '&amp;', '&')
    If StringLeft($s_temp, 1) = '/' Or StringInStr($s_temp, 'google') Or StringInStr($s_temp, 'cache') Then ContinueLoop

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

    $as_ret &= $s_temp & '&*|&%'

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

    Next

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

    $as_ret = StringTrimRight($as_ret, 5)

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

    $as_ret = StringSplit($as_ret, '&*|&%', 1)

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

    Return $as_ret

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

    EndFunc ;==>_Google

    [/autoit]


    bei der IE.au3 helfe ich dir gerene weiter
    bei den RegExp musst wenn anderes Fragen
    das habe ich noch nicht so verstandne

  • Ich versteh leider garnix =(

    hab das gefunden:

    [autoit]

    Func _IETableWriteToArray(ByRef $o_object)
    If Not IsObj($o_object) Then
    __IEErrorNotify("Error", "_IETableWriteToArray", "$_IEStatus_InvalidDataType")
    SetError($_IEStatus_InvalidDataType, 1)
    Return 0
    EndIf
    ;
    If Not __IEIsObjType($o_object, "table") Then
    __IEErrorNotify("Error", "_IETableWriteToArray", "$_IEStatus_InvalidObjectType")
    SetError($_IEStatus_InvalidObjectType, 1)
    Return 0
    EndIf
    ;
    Local $i_cols = 0, $trs, $tr, $tds, $i_col, $i_rows, $col, $row
    $trs = $o_object.rows
    For $tr In $trs
    $tds = $tr.GetElementsByTagName ("td")
    $i_col = 0
    For $td In $tds
    $i_col = $i_col + $td.colSpan
    Next
    If $i_col > $i_cols Then $i_cols = $i_col
    Next
    $i_rows = $trs.length
    Local $a_TableCells[$i_cols][$i_rows]
    $row = 0
    For $tr In $trs
    $tds = $tr.GetElementsByTagName ("td")
    $col = 0
    For $td In $tds
    $a_TableCells[$col][$row] = $td.innerText
    $col = $col + $td.colSpan
    Next
    $row = $row + 1
    Next
    SetError($_IEStatus_Success)
    Return $a_TableCells
    EndFunc ;==>_IETableWriteToArray
    #endregion
    #region Read/Write functions

    [/autoit]

    Verstehen was es tut und wie ich weitermache? kA =(

  • Hi,

    die Funktion ließt eine HTML-Tabelle aus und schreibt die Werte in einen 2d-Array

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>
    $oIE = _IE_Example ("table") ;öffnet eine IE-Instanz mit einem Table-Beispiel
    $oTable = _IEGetObjByName($oIE, "tableTwo") ;erstellt eine Referenz auf die zweite Tabelle
    $a_htmltable = _IETableWriteToArray ( $oTable ) ;ließt die Tabelle aus, uns schreibt sie in einen 2-D Array
    For $i = 0 To UBound($a_htmltable,2)-1 ;Auslesen u. Ausgabe des Array's ---> siehe Autoit-Console
    For $k = 0 To UBound($a_htmltable,1)-1
    ConsoleWrite($a_htmltable[$k][$i]&" ")
    Next
    ConsoleWrite(@LF)
    Next

    [/autoit]

    das was ich in dem Beispiel einfach nur auf die Konsole ausgebe, müßtest Du dann mit Stringfunktionen auswerten... oder eben mit regulären Ausdrücken.

  • Zitat


    Metall Kristall Deuterium Energie

    2999 292849 28388 28393

    ...

    Nur wie bringe ich das Script dazu zu prüfen, ob da bei Metall 3000 steht?

    Du willst doch festellen ob in einer HTML-Tabelle ein bestimmter Wert steht. Also mußt Du entweder den kompletten Quelltext durchsuchen, oder Du holst Dir einen kleineren Teil der Seite über die DOM-Objekte (Document Object Model). In meinem Beispiel also eine Tabelle mit Werten drin. Wenn ich Dich richtig verstehe, stehen Die Werte die Dich interessieren ebenfalls in einer Tabelle. Du müßtest also nur noch herausfinden wie die Tabelle heißt bzw. die wievielte Tabelle es in der Webseite ist (index).

    Wenn Du also Werte aus einer Website prüfen willst, mußt Du Dir doch erst die Daten irgendwie besorgen. Sobald Du die Werte ausgelesen und geprüft hast, kannst Du dann die nächste Aktion starten.

  • ne das ist nicht so ne tabelle, da ist das metall - icon und darunter steht ne Zahl ;)

    Aber bei ogame hat es sich erledigt, man hat mich gebeten es nicht weiter zu machen ;)

    Muss also nicht ogame sein, sondern zb auf https://autoit.de/www.gmx.de sobald da steht "Auto" als beispiel ;)

    In diesem fall müsste man also den Quelly prüfen, oder? :hm:

    • Offizieller Beitrag

    Habe im Firefox was sehr interessantes festgestellt:
    Wenn man auf der Seite einfach das TIppen anfängt (und nicht in einem Eingabefeld ist), dann sucht er nach dem eingegebenen Text und markiert es, wenn es ein Link ist, sodass man mit der Leertaste direkt wechseln kann.

    Könnte also so gehen:

    [autoit]

    Send("{TAB, 3}Auto{SPACE}")

    [/autoit]

    peethebee

  • Bei mir funtzt das nur wenn ich davor Strg + f gemacht habe ;)

    Würde es also so funtzen?

    Send strg + f

    dann ein Pixelsearch, ob diese stelle grün markiert ist

    Wen ja, dann...?

  • Zitat

    Original von huggy
    Bei mir funtzt das nur wenn ich davor Strg + f gemacht habe ;)

    Würde es also so funtzen?

    Send strg + f

    dann ein Pixelsearch, ob diese stelle grün markiert ist

    Wen ja, dann...?


    posten uns doch mal den quelltest der HTML seite
    dann kann ich dir woll helfen