Autoit und html

  • Hi, ich begrüße erst mal alle hier im Forum. Ich hab bis gesten mit VBS-Scripte gearbeitet die Formulare ausgefüllt haben und abgeschickt ebenso hab ich text von der website ausgelesen und ausgewertet. Hat sehr gut geklappt, nun habe ich AutoIt endeckt........

    Ich möchte das selbe jetzt auch mit AutoIt machen und brauche da etwas hilfe.

    Das ausfüllen der formulare funktioniert prima. :]

    Nur das auslesen von Texten auf der website macht mir probleme bzw. hab ich keine ahnung wie ich das anfange. ?(

    z.b.
    <p>Ich muss in eine AutoIt Variable</p>

    Ich kenne AutoIt erst seit gestern abend.

    Ich hoffe das war verständlich :D

    mfg Scout

  • Danke............

    Ich hab jetzt folgendes versucht....

    [autoit]

    #include <ie.au3>
    #include <INet.au3>

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

    $oIE = _IECreate ("about:blank")
    _IENavigate($oIE, "http://www.google.de")
    _INetGetSource ($oIE)

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

    ;warten bis die Seite komplett geladen wurde
    _IELoadWait($oIE)

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

    $text = _IETagNameGetCollection($oIE,"p",1)
    MsgBox(0, "Text!", $text)

    [/autoit]

    ....leider funktioniert es nicht die Variable $text bleibt leer :(

    also in meinen VBS Scripten hab ich auch immer nach den html-Tag's gesucht und dachte es könnte hier auch so funktionieren.
    Irgendwo muss ich wohl einen kleinen Denkfehler haben :D.

    mfg Scout

  • _INetGetSource bekommt als Argument die URL und liefert die komplette Seite zurück also:

    [autoit]


    #include <INet.au3>

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

    $text = _INetGetSource("www.google.de")
    msgbox(0,"Source:",$text)

    [/autoit]
  • Ja das hab ich schon rausgefunden, ich benötige aber nur einen text von der seite z.b.

    <p><font size=-2>&copy;2007 Google</font></p>

    ich möchte nur den teil zwichen <p>..... und .....</p>

    und nicht die ganze website. ?(

    Mit der Funktion hab ich mir gedacht es könnte funktionieren:

    _IETagNameGetCollection()

    dem ist aber nicht so oder ich wende es falsch an.

    Naja ich probiere mal weiter, vielleicht hat ja jemand doch noch ne lösung.

    mfg Scout

    Einmal editiert, zuletzt von scout (11. August 2007 um 13:20)

  • Dann durchsuche den Text danach:

    [autoit]

    #region Includes
    #include <Array.au3>
    #include <INet.au3>
    #endregion Includes

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

    $sText = _INetGetSource("www.google.de")
    $sPattern = '<p>(.*)</p>'
    $aArray = StringRegExp($sText, $sPattern, 3)
    _ArrayDisplay($aArray)

    [/autoit]

    MfG
    Stilgar

  • Ok das hat soweit geklappt danke.

    So ich progge mal weiter und schau ob ich das einbauen kann.

    mfg Scout

    ----------------------------------------------------------------------------------------------
    ne kann es nicht einbauen, da ich ein formular ausfülle und dan mit submit verschicke und der text muss dann von der website ausgelesen werden die dann schon offen ist.

    Einmal editiert, zuletzt von scout (11. August 2007 um 13:33)

  • Ok, so wie es aussieht gibt es keine lösung für mein problem! X(

    Vielleicht kann mir dann jemand einen TIPP geben, wo ich eine beschreibung von den funktionen
    die in der IE.au3 stehen das was dort an infos, für mich als neuer, etwas dürftig.

    Im großen und ganzen geht es mir darum diese funktionen zu verstehen und anzuwenden:

    _IETagNameGetCollection()
    _IETagNameAllGetCollection()

    falls jemand ein Tutorial kennt wo etwas in der art beschrieben ist wäre ich sehr dankbar.
    Das tutorial hier im Forum hat mich nur ein bissel weiter gebracht.

    mfg Scout

  • hmmm, sowas hab ich mir schon gedacht, da bin ich wohl auf dem falschen dampfer. ok danke, dann such ich mal weiter.

    mfg scout

  • Ich versuch es jetzt mal so wie es Stilgar beschrieben hat.

    Hier ist mal mein Quellcode:

    [autoit]

    #include <ie.au3>
    #include <INet.au3>
    #include <Array.au3>

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

    $oIE = _IECreate ("about:blank")
    _IENavigate($oIE, "http://127.0.0.1/website/index.php")

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

    ;warten bis die Seite komplett geladen wurde

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

    $oForm = _IEFormGetCollection ( $oIE, 0 )
    $oUsername = _IEFormElementGetObjByName($oForm, "searchname")
    _IEFormElementSetValue($oUsername, "Lukas")
    _IEFormSubmit($oForm)

    [/autoit]

    bis hier hat alles gut geklappt das formular hat ne neue site im selben fenster geöffnet und eine Meldung zum Formular ausgegeben. Diese meldung will ich auslesen, dazu möchte ich den ganzan quellcode in eine wariable lesen das mache ich mit

    [autoit]

    _INetGetSource("http://127.0.0.1/website/datei.php")

    [/autoit]


    Nur geht das so nicht weil er dann die datei.php neu laden tut und die meldung is wech ich müsste also den quellcode des aktivenIN-Fenster holen hab leider keine ahnung wie ich den hole.

    wenn ich ihn dann hätte könnte ich ihn auswerten nach meinen gesuchten tag z.b.

    [autoit]

    _INetGetSource("Aktives fenster auslesen???")
    $sPattern = '<p>(.*)</p>'

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

    $aArray = StringRegExp($sText, $sPattern, 3)
    _ArrayDisplay($aArray)

    [/autoit]

    Tja das war eigentlich alles was ich machen wollte.

    mfg Scout

  • Danke das ist schon sehr gut der Quellcode der ganzen seite steht jetzt in
    der $sText Variable nur das durchsuchen geht jetzt nicht mehr.

    [autoit]

    #include <ie.au3>

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

    #include <Array.au3>

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

    $oIE = _IECreate ("about:blank")
    _IENavigate($oIE, "http://127.0.0.1/website/index.php")

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

    ;warten bis die Seite komplett geladen wurde

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

    $oForm = _IEFormGetCollection ( $oIE, 0 )
    $oUsername = _IEFormElementGetObjByName($oForm, "searchname")
    _IEFormElementSetValue($oUsername, "Illuminus")
    _IEFormSubmit($oForm)

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

    $sText = _IEBodyReadHTML($oIE)

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

    $sPattern = '<p style="text-align:justify">(.*)</p>'
    $aArray = StringRegExp($sText, $sPattern, 3)
    _ArrayDisplay($aArray)

    [/autoit]
  • Tja schwer zu sagen warum das nicht mehr geht. Vielleicht stimmt ja die Regex nicht mehr oder der Ausdruck steht gar nicht im Text ...? Wenn ich wüßte was denn nun $sText drinsteht könnt ich weiterhelfen.

  • Ok es klappt jetzt wie ich es will. *freu*


    Ich danke allen die dazu beigetragen haben.


    Nachti ihr lieben.

    mfg Scout

    Einmal editiert, zuletzt von scout (11. August 2007 um 23:53)