Beiträge von Muecke

    Musashi : Danke für den Link, jedoch würde ich das gerne mit RegEx hin bekommen. Wenn es denn Möglich ist.


    Eckige Klammern bilden eine Klasse. Du kannst dort z B. mehrere Zeichen, die an dieser Stelle, in beliebiger Folge, auftreten dürfen zusammenfassen. Außerhalb der Klammer kannst du dann die üblichen Multiplier setzen: + oder *.

    Es gibt auch vorgefertigte Klassen, kannst du im Detail in der Hilfe zu StringRegEx nachlesen.

    Um das mehrfache Auftreten zu matchen, bildest du eine Gruppe durch (...) und setzt das Flag 3 in der Abfrage. Dann hast du ein Ergebnisarray mit den Treffern.


    Eklige Klammern Bilden die Klasse für ein "Such Schema"?

    die Runden Klammern definieren was ich wider ausgeben kann. und gleichzeitig das dies Öffners vorkommen kann? das verwirrt mich etwas.


    was ich bisher habe:

    AutoIt
    #include <IE.au3>
    #include <Array.au3>
    
    Local $Url = "https://www.motointegrator.de/artikel/1192373-stossdaempfer-sachs-315-482"
    Local $oIE = _IECreate($Url)
    Local $CODE_HTML = _IEBodyReadHtml ($oIE)
    _IEQuit($oIE)
    
    Local $Ergebnis = StringRegExp($CODE_HTML, 'class="spec table table-condensed product-spec-tabs".\s*<tbody><tr>\s*<td>(.*):<\/td>\s*<td>(.*)<\/td>\s*<\/tr>\s*<tr>\s*<td>(.*):<\/td>\s*<td>(.*)<\/td>', 3)
    _ArrayDisplay($Ergebnis)

    Die Runden Klammern verwende ich ja schon.


    Wenn ich den Text \s*<\/tr>\s*<tr>\s*<td>(.*):<\/td>\s*<td>(.*)<\/td> noch ein paar mal hintereinander in mein Suchschema eintippe dann findet er die Dinge auch. Sobald ich Eklige oder Runde Klammern darum setze klappt das nicht mehr.


    Wo habe ich den Denkfehler?


    Das sollte später so ausschauen:


    Start: class="spec table table-condensed product-spec-tabs".\s*<tbody><tr>\s*<td>(.*):<\/td>\s*<td>(.*)<\/td>

    Wiederholen unendlich: \s*<\/tr>\s*<tr>\s*<td>(.*):<\/td>\s*<td>(.*)<\/td>

    Ende: \s*<\/tr>\s*<\/tbody>


    Das ganze nur im StringRegExp.

    Hallo miteinander,


    ich möchte ein Suchmuster (Reguläre Ausdrücke) wiederholen jedoch versehe ich nihct wie ich das in ein Gruppe packe die sich unendlich oft wiederholen darf.


    Testen tue ich das hier: https://regex101.com/r/9v450w/2


    Mein String ist HTML Code.

    Lesen möchte ich den Inhalt einer Tabelle


    Auszug vom HTML Code:


    Mein StringRegExp Syntax: class="spec table table-condensed product-spec-tabs".\s*<tbody><tr>\s*<td>(.*):<\/td>\s*<td>(.*)<\/td>\s*<\/tr>\s*<tr>\s*<td>(.*):<\/td>\s*<td>(.*)<\/td>

    Zu wiederholen: \s*<\/tr>\s*<tr>\s*<td>(.*):<\/td>\s*<td>(.*)<\/td>


    Ich habe auf verschiedenen Seiten jetzt gesehen das wenn man eine Eckige Klammer [] um einen Teil macht und Plus (+) bzw. ein Mal (*) danach schreibt das man dann die gesamte folge wiederholen kann.

    leider klappt das bei mir nicht, daher habe ich entweder etwas Falsch verstanden, oder Fehlerhaft zusammen gebaut.


    hat mir jemand einen Tipp? oder kann mir weiterhelfen?


    gruß Mücke

    Alles klar, danke.


    Du bist mir ein Große Hilfe gewesen. DANKE



    ps. da wir ja auch alle davon leben das wir Lösungen zu gesiecht bekommen, habe ich hier mal meinen bisherigen Code, und bis jetzt Klappt es alles.

    Jetzt muss ich mich überlegen wie ich eine Tabelle die eine Dynamische Länge hat am besten auslese ;)


    Ok, dann habe ich das mit der Klammer richtig Interpretiert :)

    Danke für dein Feedback.



    Bezüglich der Doppelten ", ich persönlich mach das nihct so gerne (komme dann immer durcheinander wie viele da jetzt wirklich sind :rolleyes:, daher mache ich das Lieber mit mit ' am Anfang und am ende.

    Oder ist das eher kontraproduktiv? hat das Nachteile? oder birgt das Fehler ?

    Ok, das klappt. erst mal danke.

    Leider verstehe ich nicht warum :(


    was du machst.

    StringRegExp(..., '<tr data-codename="manufacturer">\s*<td>(.+?)<\/td>', 3)

    Als Ergebnis bekomme ich tatsächlich nur "Hersteller" warum?

    Warum bekomme ich nicht alles das als regulären Ausdruck hinterlegt ist zurück gegeben? das verstehe ich nicht.


    \s* = alle unsichtbaren zeichne auch Zeilenumdrücke (Länge unendlich)

    (.+?) = Gruppe. Die Elemente in der Gruppe werden in Reihenfolge bearbeitet und können zusammen wiederholt werden.

    - Findet jedes einzelne Zeichen außer, Zeilenumbruchs.

    - 1 oder mehr, faul.

    \ = Wofür das hinten noch mit eingebaut wurde, habe ich noch nicht raus gefunden.




    [EDIT]


    ich glaube ich habe verstanden, das was in der Klammer ist wird zurück gegeben.

    und das \vor dem / ist ""/ Ein nicht entblößtes Trennzeichen muss mit einem Backslash (\) entblößt werden."" was auch das immer bedeutet soll.

    Habe die Seite Hier gefunden, damit klappt es schon sehr gut. und wenn etwas grün dargestellt wird finde ich es im Array wieder ;-).



    DANKE noch mal für deine Hilfe.



    gruß Mücke


    [/EDIT]

    Hallo miteinander,


    ich tue mich mit den Regulärer Ausdruck sehr schwer :(

    Ich lese eine HTML Seite, und versuche bestimmte Dinge zu finden.


    Mein String: (Auszug vom Original)


    Ich möchte finden:

    1. Hersteller

    2. BOSCH


    1. Suche

    Code
    $aResult  = _StringBetween($CODE_HTML, '<tr data-codename="manufacturer">\s*<td>', '</td>')
    if Not isArray($aResult) then  ConsoleWrite (@CRLF & "KEIN ARRAY")
    if isArray($aResult) then ConsoleWrite (@CRLF & " Result: '" & $aResult[0] & "'") ; Hersteller
     _ArrayDisplay($aResult)


    Leider bekomme ich kein Ergebnis :(


    kann mir jemand etwas helfen und erklären warum? was mache ich Falsch oder welchen Denkfehler habe ich gerade?


    Gruß Mücke


    \s = Findet alle Whitespace-Zeichen: Chr(9) bis Chr(13), welche Tabulator, Zeilenschaltung, senkrechter Tab, Seitenvorschub, Wagenrücklauf und das Leerzeichen sind ( Chr(32) ).

    * = 0 oder mehr, gierig.

    ps. Das ist mein gerammter Code dazu.

    Hallo miteinander,


    ich möchte eine Webseite aufrufen und bestimmte Informationen von dort lesen.

    Dazu nutze ich im Browser die Funktion "Element untersuchen"


    Leider bekomme ich nicht den ganzen Code ausgelesen ;(


    Beim Untersuchen habe ich den Richtigen Code sichtbar, wenn ich Quelltext anzeigen mache dann bekomme ich nur Javascript angezeigt ;-(.

    Wie kann ich den für mich relevanten Code Laden?


    Aktuell mache ich das so, klappt leider nicht: ;(


    C
    #include <IE.au3>
    #include <String.au3>
    
    $Url = "https://www.daparto.de/Teilenummernsuche/Bosch/0986494187?categoryId=1549&kbaTypeId=30078"
    $oIE = _IECreate($Url)
    $CODE_HTML = _IEBodyReadHtml ($oIE)
    
    $G_Titel = _StringBetween($CODE_HTML, '<h1>','</h1>')
      ConsoleWrite (@CRLF & " Titel: " & $G_Titel) ; == > Bosch Bremsbelag Art.-Nr.: 0 986 494 187
      ConsoleWrite (@CRLF & @CRLF & "Quelltext ausgabe:" & @CRLF &  $CODE_HTML )


    Könntet Ihr mir sagen wie ich den Quelltext laden muss.


    Gruß Mücke

    man bin ich ein Vollpfosten.


    Sorry, für die Anfrage, ja es funktioniert Einwandfrei, jedoch ist ein anderer teil im Code etwas daneben gewesen.

    Durch die Prüfung nach dem Objekt habe ich gemerkt das das Programm vorher schon aussteigt ;-(.


    Sorry mein Fehler.


    gruß Mücke

    Hallo Miteinander,


    ich möchte ein Formular auf einer Website ausfüllen, und versenden.


    Leider komme ich nicht auf der input Feld.

    Bei den anderen Formularen gab es für alle Elemente immer eine ID :)

    jetzt habe ich nur den Namen :(




    Das ist mein AutoIT Code:

    Code
    ...
    
    $oIE = _IECreate($Url)
    ...
    
    $oForm = _IEFormGetObjByName($oIE, "search")
    $oQuerySuche = _IEFormElementGetObjByName ($oForm, "query")
    _IEFormElementSetValue ($oQuerySuche,"Hallo")
    _IEFormSubmit($oForm)
    ....


    Das ist der HTML Code von der Seite:


    Die Webseite auf der das Suchfeld steht.


    Ich bin mir ziemlich sicher das ich den Falschen Befehl/ Funktion verwenden da ich nicht auf eine ID sondern auf einen Namen zugreifen möchte, Wo finde ich eine Übersicht der befehle oder könnte mir jemand sagen wie die Befehle sich nenne um auf ein Formular per Namen zuzugreifen und für das Inputfeld mit Namen.



    Gruß Mücke

    Oh man das macht genau das was ich benötige :)

    Danke.


    Leider bekomme ich das in meinen Code noch nicht richtig eingebaut: :(

    Da ich auf der Webseite noch mehr Dinge mache und das alles schon wie im Beitrag 1 erstellt wurde wollte ich das gerne daran anpassen, hat nicht so richtig geklappt.


    Zwei Probleme die ich ermittelt habe.


    1. Das Identifizieren des Links ist zu umständlich, kann man in die Suche nicht auch einen Platzhalter einbauen?

    2. Das Öffnen des Links erfolgt in einem Neuen Browserfenster ich möchte das das Alte Fenster verwendet wird :(



    Mein Code:

    zu 1.

    In Zeile 20 würde ich gerne Platzhalter einbauen, irgend wie ist das was mit [] klammern glaube ich gewesen, finde es aber nicht mehr wie das gemacht wird.

    Dann könnte ich mir Zeile 21 und 22 Sparen.


    zu 2.

    Wie kann ich definieren das im Selben Browser Fenster der Neue Link geöffnet werden soll?

    Hallo miteinander,


    ich möchte auf einer Seite (WWW) eine Eingabe machen und auf der Ergebnisseite dann auf den erstes Link klicken der in der Tabelle erscheint.

    Ich kann mein Suchbegriff eingeben, und Suchen lassen, ich komme nur nicht dahinter wie ich den Link in der Tabelle finde und dann öffnen lasse.

    Würde mich freuen wenn Ihr mir dabei helfen würdet.


    Ich möchte keine Werbung machen, daher ist auf dem Bild alles unkenntlich gemacht !

    Der Rote Kasten zeigt das gerammt Ergebnis der Suche

    Der Grüne Kasten zeigt den Link der geöffnet werden soll.



    Die Webseite habe ich in den Spoiler gepackt. ich hoffe das die dann von Goole und co nicht gefunden wird hier.



    Das ist mein Code bisher.

    Gruß Mücke

    Hallo miteinander,


    Ich hoffe Ihr habt eine Idee für ein Fertige Programm oder wie man so etwas mit AutoIT umsetzen könnte.


    Folgendes.


    Ich muss immer zum Bestimmten Zeiten verschiedene Dokumente per Mail versenden.

    Liegt der Stichtag auf einem Wochenende so muss am Freitag davor das Dokument versendet werden.

    Liegt der Stichtag in meinen Urlaub muss vor meinem Urlaub das Dokument versendet werden.


    zum 15. jeden Monats (Dokument: Zwischenbericht)

    zum 4 Werkstag jeden Monats (Report: Alpa)

    zum 10. jeden Monat (Dokument: Reisekosten)

    zum 15.04., 15.07., 15.10. 15.12. (Dokument: Quartalsmeldung)


    Da ich mich in der letzten Zeit keine Freunde gemacht habe da ich die Dokumente regelmäßig vergessen habe muss ich an mir arbeiten und einen weg finden das ich das nicht immer vergesse.


    ich habe mir alles als Termin im Kalender eingetragen, da Problem das dabei ist das ich nicht immer im Büro bin, ich bin viel unterwegs, und dann bekomme ich die Erinnerung aufs Handy die drücke ich dann natürlich weg und vergesse das auch wider, leider hat es auch nicht geklappt das ich immer wider in den Kalender schaue um zu sehen was ich vergessen habe.



    Daher suche ich ein Programm das mir beim Hochfahren des Rechners sagt was ich machen muss oder was ich vergessen habe.

    Nur wenn ich die Meldung als erledigt markiere erinnert er mich beim nächsten mal nihct mehr dran.


    Bzw. es wäre ganz gut wenn es nicht nur beim Hochfahren sondern auch im laufenden betrieb ab 0:00 Uhr machen würde, so sehe ich das am nächsten morgen dann.



    Habt Ihr eine Idee?



    Gruß Mücke

    Ah Ok, das erklärt einiges.

    Danke für deine Erklärung.


    Dann mache ich mir in mein Script einen Kleinen Ablauf Plan bei dem ich beschreibe was ich noch Händisch zwischen durch machen muss.

    Admin Rechte wollte ich meinem Script nicht geben wer wies was schief geht und nachher ist der Rechner nicht mehr Einsatz fähig :-).


    Ich kann damit Leben das ich bei der Benutzerkontensteuerung auf NEIN Klicke :-).


    Danke dir.


    Gruß Mücke

    ich habe da was gefunden das mir weiter geholfen hat :)

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Hier wurde zwar per Mauskoordinaten gearbeitet doch ich habe mit dem Befehl Control... etwas anfangen können.


    Dazu habe ich jetzt folgendes zusammen gebaut.


    CODE:



    Zwischen Zeile 16 und 18 wird ein Fenster geöffnet von Windows auf das ich nicht zugreifen kann ;(

    Benutzerkontensteuerung


    Das muss ich von Hand ansteuern, kann man das auch Automatisieren?



    Wenn ich JA klicke dann kann ich das Zweite Fenster von TeamViewer nicht ansteuern :( wenn ich NEIN Klicke dann kann ich es ansteuern, woran liegt das?


    Gruß Mücke

    Hallo miteinander,


    wenn ich ein Programm Öffne mit RUN wie kann ich dann auf Kästchen etc. klicken?


    Mein Code bis jetzt:

    Code
    #include <MsgBoxConstants.au3> ;** für MsgBox
    MsgBox($MB_SYSTEMMODAL, "Info für User", "Programm Start")
    
       Run ("C:\Users\Muecke\Desktop\Daten\AutoIt\Script\TeamViewer\TeamViewer_Setup.exe")
    MsgBox($MB_SYSTEMMODAL, "Info für User", "Programm ENDE")


    Bei mir Öffnet sich nun das Programm TeamViewer_Setup.

    Jetzt würde ich gerne auf Hacken setzen etc. und dann auf Stimme zu und fertigstellen Klicken.



    Ich habe das Programm "AutoIt V3 Window Info" gefunden ich habe nur keine Ahnung was ich mit den Werten die mir das Teil anzeigt wenn cih mit dem Finder Tool auf etwas bin umzugehen habe.

    Mit welchen befehlen muss ich jetzt weitermachen?


    Gruß Mücke

    Hallo Andy,


    ich bin mir nicht ganz sicher auf was du anspielen möchtest damit. ich nehme es einfach mal als Kompliment :)


    Wenn du wissen möchtest ob ich mit meinem Projekt weiter komme, ja ich habe es geschafft die Website aufzurufen meine Artikel zu suchen die Infos die ich haben möchte vom "Monitor" zu lesen und in einer CSV Datei zu sichern :-).


    Ich habe immer mal wider kleine hartnäckigere stellen an denen es nicht so einfach für mich ist wie für jemanden der richtig Programmiren kann :) doch das bekomme ich dank der Tatkräftigen Unterstützung dieses Forums sehr gut hin.


    Ich persönlich bin sehr froh auf dieses Forum zurück zu greifen zu können und das es Leute gibt die Helfen.



    Gruß Mücke

    Hallo miteinander,


    ich würde gerne auf einer Webseite eine CheckBox mit einem Harken versehen, wie wenn ich sie anklicken würde mit der Maus.


    Auf meine Input Felder greife ich wie folgt zu.


    Code
       $oForm = _IEFormGetObjByName ($oIE, "searchGenericNumber")
          $oQuerySuche = _IEFormElementGetObjByName ($oForm, "searchGenericArticleNumber") 
          _IEFormElementSetValue ($oQuerySuche,$fSuche)
    
          $oQuerySuche = _IEFormElementGetObjByName ($oForm, "brandno")
          _IEFormElementSetValue ($oQuerySuche,$gHersteller_ID)


    Ich habe den Befehl _IEFormElementCheckBoxSelect gefunden, bekomme es jedoch nicht hin den hacken zu setzen :(

    Link zum Befehl: _IEFormElementCheckBoxSelect


    Der Code der HTML Seite schaut so aus:

    Code
    <label class="displayInline" for="exactSearch">
      <span class="pull-left paddingSearchOption">
           <input class="searchOptionsTextInput" type="checkbox" value="1" id="exactSearch" name="exact" checked="checked">
      </span>
    ...
    </label>


    Was ich glaube das ich verwenden muss:

    $oObject = "$oForm"

    $sString = Habe keinen Dunst was das sein soll

    $sName = "searchOptionsTextInput"

    $iSelect = 1

    $sMode = Habe keinen Dunst was das sein soll

    $iFireEvent = 1


    Kann mir jemand dabei etwas helfen? wie ich das richtig hin bekomme?


    Gruß Mücke