Daten von einer Webseite auslesen

  • hallo miteinander,

    ich möchte auf in einem Webshop Preise und Artikelbezeichnung auslesen.
    Da ich jedoch recht viele Artikel habe bei denen ich dies immer wider machen möchte ist der Zeitaufwand schon recht hoch.
    Daher war meine Überlegung anstelle alles vom Monitor abzuschreiben die Daten in eine CSV Datei schreiben lassen.

    so würde ich gerne vorgehen.

    1. ich melde mich im Webshop an
    2. ich suche den Artikel den ich meine
    3. ich rufe den Artikel auf
    4. ich Starte ein kleines Tool das die offene Webseite an bestimmten Stellen ausliest
    das Tool schreibt die Daten in eine CSV Datei
    5. dann springe ich wider zu Punkt 2


    Ich möchte das nicht von einem Bot machen lassen sondern ich möchte die Artikel suchen und auswählen, das abschreiben vom Monitor sollte jedoch automatisiert sein.


    Im Netz habe ich für solche aufgaben das Add-ons für Firefox "iMacros" gefunden, leider ist hier immer alles auf Englisch und das Forum für iMacros lässt nur Englisch zu :(
    leier kann ich kein Englisch, so bin ich dann auf dieses Forum gestoßen jetzt bin ich mir nur nicht sicher ob das hier auch ein Tool in der Richtung zum iMacro ist oder ob Ihr ein extra Unterforum für iMacros habt, bzw. wo ich denn mit meinen Fragen hin kann, bisher habe ich noch kein richtig laufendes iMacro hin bekommen stehe also noch ganz am Anfang. und bin für fast alles offen :)


    Wenn Ihr mir weiter helfen könnt würde ich mich sehr freuen.

    Gruß Mücke

  • Du könntest die Internet Explorer UDF (IE.au3) verwenden. Mit ihr kannst du eine ganz normale Instanz des IE erzeugen in der du dann wie gewohnt in deinem Webshop surfen kannst. Zusätzlich könntest du mit der Funktion HotkeySet() darauf warten, dass du zu einem gewünschten Artikel gesurft bist. (Wenn du einen gefunden hast drückst du eben die Tastenkombination) In der zur Tastenkombination gehörenden Funktion kannst du dann mit den Funktionen der IE-UDF den Text/Quelltext der gerade im Browser geöffneten Seite auslesen und daraus mit Funktionen wie StringBetween, StringRegExp, usw. die benötigten Daten extrahieren.
    Das Abspeichern der Daten ist dann ganz einfach mit den File-Funktionen möglich.

    Spoiler anzeigen

    LG
    Christoph :)

    Einmal editiert, zuletzt von BinDannMalWeg (30. September 2016 um 11:04)

  • Zitat

    jetzt bin ich mir nur nicht sicher ob das hier auch ein Tool in der Richtung zum iMacro ist oder ob Ihr ein extra Unterforum für iMacros habt, bzw. wo ich denn mit meinen Fragen hin kann, bisher habe ich noch kein richtig laufendes iMacro hin bekommen stehe also noch ganz am Anfang. und bin für fast alles offen

    Hi Muecke,

    nein Autoit geht nicht in die Richtung iMacro. iMacro generiert dir den Code ja komplett selbstständig, bei Autoit müsstest du dir alles selbst Programmieren. Für iMacro bist du hier eigentlich komplett falsch. Allerdings verstehe ich nicht wie darauf kommst, da im iMacro-Forum nur englisch zulässt. Schau mal hier, ist zwar ein alter Thread aber hier hat selbst ein Supporter dann auch deutsch geantwortet: http://forum.imacros.net/viewtopic.php?f=2&t=12371

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hallo Christoph,

    das hört sich doch schon nicht so schlecht an, und sehr User freundlich.

    Jetzt muss ich aber doch doof fragen das ist ein Code der dann im Autoit laufen würde?

    ich habe noch nicht so richtig verstanden was das für ein Programm ist und wo ich das bekomme.

    Was kostet das Programm?


    Da ich noch am Anfang bin es es mir ziemlich Jacke wie Hose mit welchen Programm ich arbeite, solange ich das richtige Ergebnis so User freundlich wie möglich bekomme :)


    Gruß Mücke


    Hey Chip,

    iMacro für Firefox ist scheinbar eine etwas abgespeckte Version von iMacro glaube ich zumindest, denn auf der webseite von iMacro kommt etwas von 30 Tagen testen und das iMacro für Firefox sagt so etwas nicht.

    Was ich damit sagen möchte auch hier muss ich den Größten teil des Codes Selber schreiben, da ich die befehle etc. nicht kenne tue ich mich damit sehr schwer :(


    Wie ich darauf komme das in den Forum von forum.imacros.net/ nur Englisch gesprochen wird, da ich mich dort registriert habe und einen Beitrag in Deutsch verfasst habe jedoch habe ich den Beitrag auch gleich mit Google übersetzen lassen und im Beitrag auch die Englische Version mit drin stehen gehabt, und ich habe mich für mein Schlechtes Englisch entschuldigt da ich das nur übersetzen lassen habe Online.


    Naja ich bin neu dort und ein Admin muss erst meinen Beitrag freigeben kam dann , und einen tag später bekomme ich eine Mail mit der Ablehnung meines Beitrages, Begründung es ist ausschließlich Englisch im Forum gestattet.

    Das hat mich sehr verwundert da mein Beitrag in deutsch und Englisch verfasst war.


    und aus dem Grund bin ich auf der suche nach einem Alternativen Forum. oder Software :)


    Gruß Mücke

  • Es gibt viele Lösungsmöglichkeiten, sehr einfach wäre:

    • gewünschten Text der Webseite markieren und auf eine Dropbox ziehen

    • das Beispiel zu _ClipBoard_ChangeChain

    beides mußt du natürlich nach deinen Bedürfnissen erweitern/abändern.


    Hallo Christoph,

    das hört sich doch schon nicht so schlecht an, und sehr User freundlich.

    Jetzt muss ich aber doch doof fragen das ist ein Code der dann im Autoit laufen würde?

    ich habe noch nicht so richtig verstanden was das für ein Programm ist und wo ich das bekomme.

    Was kostet das Programm?

    Die IE.au3 ist eine Standard Datei die man in eigene Skripte inkludieren kann. Die IE.au3 ermöglich das automatisieren des Internetexplorers. Kosten = 0 für das include, Arbeitsaufwand je nach Kenntnissen und Ansprüchen 5 Min. bis unendlich. Schau dir einfach einmal die Beispiele zu _IECreate bzw. _IECreateEmbedded an.

    mfg (auto)Bert

  • Wow das ist viel Code und viel Möglichkeiten, das Problem zu lösen.


    ich glaube irgend wie fehlt mir der Anfang.

    Wo kommt der Code denn rein? in eine Text Datei?
    mit was muss ich das Skripte ausführen?

    Mir fehlen glaube ich die Grundbausteine gerade was da wie wo ist.

  • iMacro für Firefox ist scheinbar eine etwas abgespeckte Version von iMacro glaube ich zumindest, denn auf der webseite von iMacro kommt etwas von 30 Tagen testen und das iMacro für Firefox sagt so etwas nicht.

    Genau von der Beschreibung der Erweiterung für den Firefox habe ich das aber ;). https://addons.mozilla.org/de/firefox/add…os-for-firefox/

    "Sie können die sogenannten Makros selbst aufnehmen. Den benötigten Code zum Ausführen generiert die Browser-Erweiterung dabei selbst."

    Das Problem ist scheinbar eher, wenn man die Kommentare ließt, das das ganze nicht mehr geupdatet wird auf die aktuelle Firefox-Version.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    • Offizieller Beitrag

    Hallo Muecke,

    vielleicht magst du dir für den Einstieg in AutoIt zumindest den Anfang unseres Tutorials anschauen? Du findest es auf der Startseite auf der rechten Seite.
    Hier wird dir erklärt, was AutoIt ist, wie du es installierst und die ersten Schritte. Im zweiten Teil dann auch die erweiterten Datenstrukturen.

    Grüße

    Gun-Food

  • hallo Gun-Food,

    das werde ich machen, denn irgend wie fehlt mir noch einiges bevor ich wirklich mit meiner Aufgabe anfangen kann.
    Das auf der Startseite auch Tutorials sind habe ich noch nicht gesehen gehabt werde ich aber gleich in angriff nehmen.

    DANKE.


    ich melde mich dann wider wenn ich wies was Sache ist und ich auch etwas davon verstehe.


    Bis demnächst :)


    Gruß Mücke


    Hey Chip,

    ob das an den Update liegt für den Neuen FF kann ich dir nicht sagen, ich weis nur das ich auch alleine aus den Tutoriels der Webseite entnehmen kann das einige Funktionen gar nicht vorhanden sind die dort in Bildern gezeigt werden.

    Wenn ich den Code jedoch von Hand hinein schreibe dann funktioniert das schon, ich komme nur mit dem Code nicht so richtig zurecht dort.
    Daher benötige ich Hilfe.

    ich werde mich in das AutoIt etwas einlesen und schauen ob das nicht eine echte Alternative sein würde, hier sind zumindest schon mal ein Paar von euch die wie ich Deutsch verstehen ;)
    Danke dir.
    Gruß Mücke

  • Hallo Gun-Food,

    ich bin nun dabei die Tut durch zuarbeiten :) danke noch mal dafür.

    ich wies jetzt auch warum ich die nicht gefunden habe, ich habe immer mit dem iPad auf der Webseite geschaut, und wenn man mit dem iPad auf das "Portal" Startseite geht, kommen die Kleien Fenster rechts nicht :( und man kann auch die TuT nicht finden.

    Wollte das nur kurz als Hinweis da lassen.

    Bis demnächst.

    Und allen einen schönen Feiertag.

    Gruß Mücke

  • Wie versprochen melden ich mich wider ;-).

    habe mir jetzt einen Kleinen über blich verschlaft und wollte mit dem Code aus Post #2 von @Christoph54 anfangen.

    Damit ich verstehe was genau Passiert habe ich mir als erstes Kommentare hinter jede ziele geschrieben dann sehe ich schneller was wie passiert :)
    Da ich mit dem HTML Codieren nicht so viel anfangen kann dachte ich mir das ich als Nächstes mir den HTML Code anzeigen lassen,
    das habe ich dann in einer MsgBox gemacht, das ist jedoch etwas unpraktisch denn die ist dann zu lange, :( also habe ich mir den Code in eine

    Text Datei auf dem Desktop schreiben lassen, das ist auch nicht gerade Praktisch denn hier gibt es keine Zeilenumbrüche mehr :(


    Daher meine Erste Frage:


    Wie kann ich die Zeilenumbrüche für den HTML Code beim Schreiben in eine Datei wider Aktiviren? bzw. mit übergeben?


    Dann habe ich noch eine Frage zum Beenden des AutoIT Programms, wenn ich den Browser wider schlisse dachte ich das auch das
    AutoIT Script beendet wird, ist bei mir nicht der Fall, das Script wird weiterhin in der Windows leiste ganz unten am Monitor in dem Rechten Bereich
    bei der Uhr angezeigt, das muss ich immer mit Rechtsklick und Exit beenden von Hand.
    ist da nicht der teil "OnAutoItExitRegister("onExit")"* für zuständig?


    oder mache ich da was Falsch?


    Wenn ich die Zeilenumbrüche habe und das Script richtig beendet wird würde ich gerne anfangen bestimmte teile auf einer Webseite zu
    finden und auszugeben, doch immer eins nach dem anderen. :)

    Gruß Mücke

    Spoiler anzeigen
  • Hi @Muecke

    - die Ausgabe in eine Datei mit Zeilenumbrüchen funktioniert. Versuch es vllt. mal mit Notepad++ oder jedenfalls einem anderen Editor.

    - das Schließen des Browsers beendet dein Skript nicht, weil "OnAutoItExitRegister("onExit")" allgemein die Ausführung einer Funktion registriert, die ausgeführt wird, wenn das Skript per Exit verlassen wird. Bei dir fehlt einfach der Teil, der abfragt, ob der Browser noch läuft und evtl. dann deine Endlosschleife verlässt.
    Hier unten habe ich einfach mal eine Prüfung in die Endlosschleife eingefügt, ob der IE-Prozess noch läuft (Nur diese eine Zeile If not ProcessExists...). Wenn nicht, wird per ExitLoop die Endlosschleife verlassen und danach wird beim Beenden des Skripts auch deine onExit-Funktion aufgerufen.

    AutoIt
    While True                                                                  ; Endlosschleife
        Sleep(1000)                                                             ;    Warten für 1.000 Sekunden
        If Not ProcessExists("iexplore.exe") Then ExitLoop
    WEnd

    Grüße autoiter

  • Ich hab mal ein kleines Script geschrieben. Vielleicht magst du die Idee auch lieber als das mit dem extra Browserfenster.
    Ich hab alles Kommentiert.
    Die Lösung zu den Zeilenumbrüchen ist in Zeile 36-39. Das Problem ist, dass Linux/Mac als Zeilenumbruch das unsichtbare Zeichen @LF nutzt, Windows aber die beiden Zeichen @CRLF. Deshalb sind die Zeilenumbrüche unter Windows dann nicht sichtbar. Spezielle Programme, wie das von autoiter genannte Notepad++ (sehr zu empfehlen) zeigen auch @LF als Zeilenumbruch an.

    OnAutoitExitRegister sorgt nur dafür, dass wenn dein Programm beendet wird, vorher noch die genannte Funktion aufgerufen wird.
    Wird eigentlich nur genutzt, wenn man noch irgendwas unbedingt machen muss, bevor das Programm beendet. Zum Beispiel Speicherfreigeben, Dateihandle schließen,...
    Das FileOpen/FileClose kannst du hier auch weglassen. Das ist eigentlich nur dann wichtig, wenn man die Parameter von Fileopen braucht, oder sehr oft in eine Datei schreibt.
    Du hast ja nur einen einzigen Schreibvorgang, deshalb kann es hier weggelassen werden.


    Am besten erst einmal ausführen und dann alles durchlesen, dann sind die Kommentare verständlicher schätze ich :)
    Ich hoffe das hilft dir weiter :)

    MfG Kanashius

  • Deine @LF bzw. @CR Ersetzung ist übrigens fehlerhaft und führt zu doppelten Zeilenumbrüchen, da das @CR vom zuvor eingefügten @CRLF erneut durch @CRLF ersetzt wird. Das Ergebnis ist dann ein @CRLFLF

    Hier eine korrekte Lösung:

    AutoIt
    if NOT StringInStr($sSource,@CRLF) then ;Wenn keine Zeilenumbrüche in Windows sichtbar
    		$sSource=StringReplace($sSource,@LF,@CR);Ersetze Linux/Mac Zeilenumbrüche durch die von Windows
    		$sSource=StringReplace($sSource,@CR,@CRLF);Keine Ahnung, warum jemand cr nutzen sollte, aber man weiß ja nie^^
    	endif
  • Hey @autoiter,

    Danke für die Codezeile, da klappt prima so.
    hier wir geprüft ob die Datei "iexplore.exe" noch ausgeführt wird oder nicht, wenn nicht wird der Loop verlasen und das AutoIT-Script beendet.
    das ist perfekt. Danke.


    Hey @Kanashius,

    ich wollte jetzt nicht den gesamten Rechner umstellen ;) müssen und mir das "Notepad" als Standarteditor Verlinken. wäre schön wenn man nicht alles immer ändern muss ;-).

    Ich hoffe das du den Code nicht extra für mich geschrieben hast, es sind viele Dinge drin die mehr als neu sind.
    Jedoch gefällt mir das "Normale" Browser Fenster vom IE besser.


    auch wenn ich in Script aus Post #2 die URL ändere von Hand bekommt das Script diese mit.

    Deine Zeilenumbrüche habe ich jedoch bei mir auch mit eingefügt und klapt prima :) Danke dafür .


    Hey @misterspeed,

    Cool danke, bei mir gab es bis jetzt zwar keinen doppelten Zeilenumbrüche, habe jedoch eine Änderung mit aufgenommen und Funktioniert einwandfrei.
    Danke dafür.


    @alle:
    Habe das Script noch beim Öffnen der Datei auf Modus 2 gestellt das jeder Alter Inhalt erst ein mal gelöscht wird, jetzt kann ich anfangen bestimmte teile auszulesen.
    Hoffe das geht einfach :) ich werde ein wenig Experimentieren.

    Danke schon mal für die erste Hilfe von euch.

    ich melde mich wider.


    Gruß Mücke


    EDIT: ich könnte auch den neuen Script -code einstellen ,-)

  • Hab das Script zwar nicht getestet, aber so auf anhieb würde ich dir davon abraten eine 1000ms Pause in deine Endlosschleife zu packen. Sleep() ist blockierend und deine Hotkeys werden erst ausgeführt wenn die Sleep() Funktion beendet wird. 100ms sollten mehr als ausreichend sein und sorgen für ein deutlich rekationsfähigeres Script. Dürfte in deinem Fall zwar nicht allzu relevant sein, aber für die Zukunft ist es vielleicht hilfreich zu wissen, dass zu lange "Sleeps" negative Auswirkungen haben können.

  • Irgend wie mag ich das Forum, daher möchte ich euch meinen Neuen Strukturierten Code auch nicht vorenthalten.

    Ja ich bin noch immer dabei den Befehl "StringRegExp" besser zu verstehen, warum etwas ins Arrea kommt oder nicht, jedoch habe ich mir ein paar Hilfen eingebaut.

    1. Funktion Quelltext in eine Datei Speichern
    2. Ergebnis in eine Datei Speichern
    3. Dateien Öffnen und Schließen in eine Funktion gepackt


    jetzt kann ich mir das Ergebnis immer in den Dateien anscheinen und scheuen ob ich auch das richtige der Webseite auslese oder nicht.
    noch klappt das nicht mal ansatzweise, doch ich bin zuversichtlich das ich das irgend wann hin bekomme.

    so das ist der Aktuelle Code von mir:

  • So da bin ich wider, habe mein Script weiter ausgebaut und kann nun alle Daten auslesen die ich Lesen möchte, jedoch habe ich ein Großes Problem.

    Mein Script beendet sich nach einer gewissen zeit von alleine. .-(

    was mache ich.

    1. Script aufrufen im Editor
    2. Script starten mit F5
    3. Auf der Webseite Servern bis ich einen interessanten Artikel gefunden habe. (sorry es ist nicht E-bay jedoch möchte ich die eigentliche Seite nicht nennen müssen da es sich um einen Passwort geschützten Shop handelt)
    4. beim Artikel der mir gefällt drücke ich "STRG + Leertaste"
    5. dann suche ich weiter.

    Und jetzt kommt es vor das mein Browserfenster geschlossen wird und mein Script sich bedankt und alles ist zu, jedoch kommt nicht die Meldung das das Fenster von Hand geschlossen worden wäre.

    Ich bin am verzweifeln denn ich finde die Stelle nicht an der es sich selbst beendet, ich gehe davon aus das ich irgend wo einen Fehler drin habe so das irgend was Überlaufen tut und daher das Script sich selbst beendet.
    könnte von euch jemand mal drüber schauen? und mir ein Tipp geben, an was das liegen könnte.


    Gruß Mücke


    das ist mein Code: