Hallo, ich habe einfache Programme geschrieben um "Daten-Kommunikation" im Internet zu automatisieren. Die Programmiersprache spielt weniger eine Rolle, ich habe Java verwendet. Z.B. um eine bestimmte Uhrzeit loggt sich ein Programm unter einen bestimmten Mitgliedsname bei Ebay ein und gibt zu einer bestimmten Auktion ein Gebot ab. Ich meine nicht den Low-Level Datenverkehr wie Socket-Programmierung, oder SSL-Zertifikate, sondern mehr z.B. das Handlen von Redirekts, Html-Scannen, Ausfuellen von <Form>-ularen, ... Vieles macht wget schon (einfache Redirects, Verwalten von Session-Cookies, SSL). Manchmal sind solche Programme einfach (z.B. Ebay). Wenn die Html-Seiten viel Javascript enthalten, werden sie kompliziert. Man muesste JS parsen. Gibt es einen Namen fuer solche Programme (Robots?), gibt es irgendwelche Freeware, Opensource von Programm-Bausteinen, um solche "Internet-Automatisierungen" zu programmieren? Leider weiss ich nicht unter welchen Namen/Begriffen ich da googeln soll.
gibt schon bibliotheken: mechanize: "stateful programmatic web browsing" stichworte: spider, robot, automator, browser, screen-scraper
Danke fuer die Vorschlaege. Die einzige unueberwindbare Schwierigkeit erscheint mir dennoch Javascript. Einfache Sachen wie
1 | top.location.hr*f=new.url.de |
2 | oder |
3 | window.location.hr*f=new.url.de |
kann meine Software zwar parsen, aber bei Sachen wie
1 | <script language="JavaScript" type="text/javascript"> |
2 | document.forms['bootOptions'].action = document.forms['bootOptions'].action + '?' + document.location.search.replace(/[?&](ibvc|imfl)=\d+/g, '').replace(/^[?&]/g, ''); |
3 | if (document.location.search.length > 0) { |
4 | var bootOpts = document.location.search.replace(/[?&](ibvc|imfl)=\d+/g, '').replace(/^[?&]/g, '').split('&'); |
5 | for (var i = 0; i < bootOpts.length; i++) { |
6 | var parts = bootOpts[i].split('='); |
7 | var node = document.createElement('input'); |
8 | node.name = parts[0]; |
9 | node.type = 'hidden'; |
10 | node.value = unescape(parts[1]); |
11 | document.forms['bootOptions'].appendChild(node); |
12 | } |
13 | } |
14 | </script> |
sehe ich alt aus.
Am weitesten kommst du wahrscheinlich, wenn du dir eine der verfuegbaren Renderingengines nimmst (die grafische Ausgabe natuerlich weglaesst) und die entstehende Dokumentstruktur auswertest.
Jürgen G. schrieb: > Leider weiss ich nicht unter welchen Namen/Begriffen ich da googeln > soll. Google mal nach Selenium - oder einfach http://seleniumhq.org :-) Mittels Selenium kannst Du einen Browser "fernsteuern". Die Steuerung kann über verschiedene Programmiersprachen erfolgen (z.B. JavaScript, Java, PHP). Selenium wird i.A. zum automatisiierten Testing von Web-Applilationen eingesetzt und simuliert reale Benutzer<->Browser-Interaktion. Da Selenium direkt mit dem Browser interagiert (vereinfacht gesagt), stehen Dir fast alle Möglichkeiten zur Verfügung, die ein realer Browser bietet, z.B. Eingabe von Texten in Eingabezeilen, Clicks auf Buttons, Page reloads, ... JavaScript wird dabei natürlich auch wie gewohnt vom Browser ausgeführt :-) Falls ich Dich richtig verstanden habe ist das genau das was Du suchst. Ich habe ein bisschen Erfahrung mit dem Ding, bei Interesse einfach Nachfragen. Ansonsten - nix für ungut, mag sein dass ich Dich falsch verstanden habe. Liebe Grüße, Stephan.
Es gibt eine Javascript engine/bibliothek, ich weiß aber nicht mehr wie die heißt. Bei python mechanize hatte ich auch was zur JavaScript Ausführung gesehen.
@ Q9: So einen hilfreichen Beitrag habe ich schon lang nicht mehr gesehen (ich weiss aber nicht mehr wo...!!)
Klaus schrieb: > @ Q9: So einen hilfreichen Beitrag habe ich schon lang nicht mehr > gesehen (ich weiss aber nicht mehr wo...!!) So weiss er wenigstens, dass es das gibt, was er braucht. Von deinem Beitrag dagegen hat er null. Gutes Stichwort fuer Javascript ist uebrigens auch "Ecmascript".
@ Peter Stegemann (pst): Ja eben, "dass es das gibt". Aber von "was er braucht" sehe ich nichts. Er sagt einfach, dass es eine Java engine/bibliothek gibt... OK, ich bin wieder ruhig, aber das wollte ich noch los werden ;)
Jürgen G. schrieb: > Gibt es einen Namen fuer solche Programme (Robots?), gibt es > irgendwelche Freeware, Opensource von Programm-Bausteinen, um solche > "Internet-Automatisierungen" zu programmieren? Sniper Ein bewährtes Teil in dieser Sparte ist Biet-O-Matic. > Leider weiss ich nicht unter welchen Namen/Begriffen ich da googeln > soll. Googel mal nach ebay+sniper
Schau Dir vielleicht auch mal DejaClick an, das kann die Bedienung von Webseiten aufzeichen und automatisiert wiedergeben. Ist ein FireFox Plugin Vielleicht kann man das ja auch zeitgesteuert hinkriegen...
@stephanm Danke fuer deinen Hinweis. Richtig, ein automatischer Browser wuerde schon das machen, was ich will. Er kann Javascript interpretieren, Dateien abspeichern, downloads, ... Nachteilig bei dieser Sache ist, dass das Layout von Seiten oft aendern und da muss man die Click-Koordinaten nachziehen. Auch kann er nicht im Hintergrund laufen, da er Browser immer den (Eingabe-)Focus braucht. Aber es ist zumindestens etwas. Auch die anderen Sachen sind interessante Tools, ich bin immer wieder erstaunt. bei http://de.wikipedia.org/wiki/Greasemonkey sehe ich >viele Arten von Internetwerbung entfernen Das waere wirklich was ganz tolles, wenn auch nicht mein Ursprungsanliegen.
Es gibt ein Tool, ltfx-0.1.6.tar.gz http://sourceforge.net/projects/ltfx LTFX - Linux Test For X. LTFX is a "script" based X-Windows GUI automation tool. Its primary purpose is to help assist with creating automated tests in the X environment by driving the X interface. Damit kann man eine beliebiges X-Oberflaeche steuern (Eingaben machen, Menues aufrufen). Das ginge auch mit einem Browser, verlangt aber viel Arbeit.
Q9 schrieb: > http://www.google.de/search?q=Javascript+engine > -> http://www.mozilla.org/js/spidermonkey/ Habe libmozjs-dev auf mein Debian System installiert, ein kleines Prograemmchen geschrieben, was ein Demo Javascript ausfuehrt. Das Paket ist super. Allerdings muss ich noch die DOM-Routinen schreiben, NUR der JS-Interpreter reicht nicht. Aber das geht in die richtige Richtung.
> Nachteilig bei dieser Sache ist, dass das Layout von Seiten oft aendern > und da muss man die Click-Koordinaten nachziehen. Selenium arbeitet nicht mit Koordinaten. Um einen Click auf einen Button zu simulieren musst Du den Button entweder über seine ID oder z.B. einen XPath-Ausdruck referenzieren. Wo der Button dann sitzt ist Selenium völig egal. Geeignete XPath-Ausdrücke für vorhandene Controls lassen sich i.A. leicht mit entsprechenden Firefox-Plugins generieren. Liebe Grüße, Stephan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.