Text in HTML Seite auslesen

  • Hi. Ich habe folgendes Problem:

    Ich möchte aus einer HTML Page bei einem Dropdown Menu:

    <option value="Kategorie 1">Kategorie 1 frei: 66</option>
    <option value="Kategorie 2">Kategorie 2 frei: 124</option>
    <option value="Kategorie 3">Kategorie 3 frei: 104</option>
    <option value="Kategorie 4">Kategorie 4 frei: 40</Option>

    66, 124, 104 und 40 auslesen. Die Zahlen ändern sich bei jedem Browser (IE) Refresh

    Ich habe _IEBodyReadHTML und _IEBodyReadText benutzt.

    Ich weiss dass dies über Regex oder String geht. Habe mit den String Funktionen gearbeitet bekomme es aber einfach nicht auf die Reihe. Kann mit bitte jemand helfen?

    :wacko:

    "Thinking in binary"

  • Das ist das komplette Dropdown:

    <option selected="selected" value="">Alle Karten anzeigen</Option>
    <option value="Kategorie 1">Kategorie 1 frei: 64</option>
    <option value="Kategorie 2">Kategorie 2 frei: 126</option>
    <option value="Kategorie 3">Kategorie 3 frei: 106</option>
    <option value="Kategorie 4">Kategorie 4 frei: 36</option>
    </select>

    Wenn ich jetzt Deinen Code so verwende:


    $sText = _IEBodyReadHTML ($oIE)
    $aRegExp = StringRegExp($sText, '(\d*)</', 3)
    _ArrayDisplay($aRegExp)
    MsgBox(0,"Und",$aRegExp)

    Ich bekomme dann eine Gridview - das wäre relevant
    Row|Col 0
    [190]|64
    [191]|126
    [192]|106
    [193]|36

    Ich benötige aber 64,126,106 und 36 jeweils als variable?

    "Thinking in binary"

    2 Mal editiert, zuletzt von R4z0r (1. März 2015 um 00:22)

  • [autoit]

    #include <Array.au3>

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

    $sText = '<option selected="selected" value="">Alle Karten anzeigen</option>' & @CRLF & _
    '<option value="Kategorie 1">Kategorie 1 frei: 64</option>' & @CRLF & _
    '<option value="Kategorie 2">Kategorie 2 frei: 126</option>' & @CRLF & _
    '<option value="Kategorie 3">Kategorie 3 frei: 106</option>' & @CRLF & _
    '<option value="Kategorie 4">Kategorie 4 frei: 36</option>' & @CRLF & _
    '</select>'

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

    $aRegExp = StringRegExp($sText, ' (\d*)</', 3)
    _ArrayDisplay($aRegExp)

    [/autoit]
  • Die Zahlen ändern sich und ich lese dass aus einer Webseite auf der ich ein Refresh mache? Ich möchte eigentlich nur sehen ob Kategorie 5 nach einem Refresh auftaucht und wenn ja dann in den Warenkorb. Ich hoffe jetzt ist es verständlicher :-/

    FALLS Kategorie 5 auftaucht möchte ich mit AutoIt dann Select Kategorie 5 selektieren dann submit und somit sind dann auf der Page nur noch Kategorie 5 Tickets.

    Bitte um Hilfe. Ich zahle auch $

    "Thinking in binary"

    Einmal editiert, zuletzt von R4z0r (1. März 2015 um 00:44)

  • Selbst, wenn man davon ausgehen kann, dass es auch mehr als nur 4 Kategorien gibt, funktioniert das Pattern von SD. Es wird dir sämtliche gesuchte Zahlen aller Kategorien auflisten.
    Du hast also die gesuchte Zahl bereits als Variable vorliegen. Und zwar in Form eines Arrays.

    hier in dem Beispiel von SD wäre das Resultat von Kategorie 5 (falls es mit angegeben worden wäre)

    [autoit]

    $aRegExp[4]

    [/autoit]


    Du weisst schon, wie man mit Arrays arbeitet?!

  • Dann erweitere eben den Patter, ich hatte eigentlich gedacht dass du die Daten soweit schon gefiltert hattest da du nur diesen Ausschnitt als Beispieldaten da gegeben hast. Den Rest mit dem IE Kram habe ich überflogen... Was genau willst du denn jetzt prüfen? Die Zahlen die da stehen oder nur ob eine weitere Kategorie auftaucht?

    1. >> StringRegExp($sText, '<option value="Kategorie \d*">Kategorie \d* frei: (\d*)</option>', 3)

    2. >> StringRegExp($sText, '<option value="Kategorie 5">Kategorie 5 frei: \d*</option>')

  • Das ist ja mein Problem ich kenne mich nicht mit Arrays aus. Habe auch die Hilfe gelesen - aber nach 6 Stunden bin ich entweder a) nicht mehr aufnahmefähig oder b) zu doof

    Also wenn mit jemand den kompletten Quellcode liefern kann der:

    IE Refresh auf einer Seite macht
    Auf dieser Seite ist dieses Dropdown, meist sind es Kategorie Ticket 1 - 4 mit unterschiedlicher Anzahl
    -> Beispiel:
    Kategorie 1 frei: 123
    Kategorie 2 frei: 1
    Kategorie 3 frei: 3
    Kategorie 4 frei: 453

    ich refreshe die Page alle x Sekunden. Selten erscheint dann eine Kategorie 5. Die ist es die mich interessiert.

    Wenn diese Kategorie 5 erschein möchte ich diese auswählen aus dieser Dropdown Box so dass dann auf der Website nur noch Kategorie 5 Tickets da sind. Die kann ich dann kaufen über den Buy Button.

    Wie gesagt ich wäre bereit auch was zu zahlen. Ich verschwende zu viel Zeit schon und bin frustriert :-/

    "Thinking in binary"

  • Zitat

    Wie gesagt ich wäre bereit auch was zu zahlen. Ich verschwende zu viel Zeit schon und bin frustriert :-/


    Also, gerne können wir auch verhandeln :D

    Um welche Seite handelt es sich denn überhaupt?