Ich möchte per cron alle paar Minuten eine Website speichern/verarbeiten, allerdings kriege ich per wget/curl nur einen JS Aufruf zu sehen, nicht aber die vom JS zusammengebaute Website.
Hier gab es schonmal eine ähnliche Aufgabe, allerdings wurde die durch einen Trick gelöst:
viewtopic.php?f=28&t=176111
In einem anderen Thread wurde auf Selenium und Edbrowse hingewiesen:
http://edbrowse.org/
Ausserdem habe ich noch PhantomJS gefunden, welches aber wohl nicht mehr funktioniert und der headless mode von Firefox, der zwar einen Screenshot speichern, nicht aber einfach das Resultat in eine Datei speichern kann.
Alles das scheint mir aber mit Spatzen auf Kanonen geschossen für meinen Fall Es gibt sicher jemanden, der bereits ein ähnliches Problem hatte. Ich finde nur seine Lösung nicht.
Liegt auch vielleicht daran, dass ich noch nicht so gut englisch kann.
JS-generierte Website speichern/verarbeiten
-
- Beiträge: 2049
- Registriert: 18.03.2012 21:13:42
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: JS-generierte Website speichern/verarbeiten
Willkommen im Forum,
ist die Seite geheim? Falls es etwas peinliches ist, kannst du mir auch eine PN schicken. Definitiv brauchst du irgendetwas was das JS vorher ausfuehrt und das HTML zusammenstellt. Selenium kann das wohl, aber dass habe ich persoenlich noch nie benutzt. Da die Webseiten heute oft mit JS ueberladen sind und es viele Varianten gibt, sind die Loesungen auch eher die Kanone.
Mit welcher Sprache verarbeitest du danach das HTML?
ist die Seite geheim? Falls es etwas peinliches ist, kannst du mir auch eine PN schicken. Definitiv brauchst du irgendetwas was das JS vorher ausfuehrt und das HTML zusammenstellt. Selenium kann das wohl, aber dass habe ich persoenlich noch nie benutzt. Da die Webseiten heute oft mit JS ueberladen sind und es viele Varianten gibt, sind die Loesungen auch eher die Kanone.
Mit welcher Sprache verarbeitest du danach das HTML?
Hilf mit unser Wiki zu verbessern!
Re: JS-generierte Website speichern/verarbeiten
Geheim ist es nicht, obs peinlich ist mußt du für dich selber beantworten Mein aktuelles Beispiel ist Minetest und deren Serverliste: https://servers.minetest.net , dort werden unter anderem die Spieler angezeigt, die dort unterwegs sind.
Ich spiele Minetest zusammen mit ein paar Freundinnen und wir verteilen uns leider auf viele Server. Also möchte ich uns etwas bauen, was anzeigt, wer von uns grade wo unterwegs ist. Als verarbeitende Sprache habe ich an php gedacht.
Wenn man genauer guckt, dann sieht man, dass die da einfach ein JSON verarbeiten, welches unter https://servers.minetest.net/list zu finden ist. Für meine Zwecke also viel besser als wenn ich mir die Serverliste zurechtschneiden müsste.
Mir geht es aber darum, wie man an ein mit JS zusammengebautes HTML kommt, wenn man nicht zufällig auf das zugrundeliegende JSON stösst.
Mir geht es nicht direkt um das Minetest Beispiel (ist ja schon gelöst), wie man solch ein System sonst noch bauen kann (einige von uns dürfen nicht auf Discord, andere dürfen kein WhatsApp, von Signal ganz zu schweigen) oder wie man nachdem man das HTML hat weitermacht (da krieg ich dann hoffentlich etwas Hilfe von meinem Vater).
Ich spiele Minetest zusammen mit ein paar Freundinnen und wir verteilen uns leider auf viele Server. Also möchte ich uns etwas bauen, was anzeigt, wer von uns grade wo unterwegs ist. Als verarbeitende Sprache habe ich an php gedacht.
Wenn man genauer guckt, dann sieht man, dass die da einfach ein JSON verarbeiten, welches unter https://servers.minetest.net/list zu finden ist. Für meine Zwecke also viel besser als wenn ich mir die Serverliste zurechtschneiden müsste.
Mir geht es aber darum, wie man an ein mit JS zusammengebautes HTML kommt, wenn man nicht zufällig auf das zugrundeliegende JSON stösst.
Mir geht es nicht direkt um das Minetest Beispiel (ist ja schon gelöst), wie man solch ein System sonst noch bauen kann (einige von uns dürfen nicht auf Discord, andere dürfen kein WhatsApp, von Signal ganz zu schweigen) oder wie man nachdem man das HTML hat weitermacht (da krieg ich dann hoffentlich etwas Hilfe von meinem Vater).
Re: JS-generierte Website speichern/verarbeiten
Du müsstest das JS arbeiten lassen, da führt kein Weg dran vorbei (wenn du die Rohdaten nicht direkt verarbeiten kannst/willst). Du wirst eine Browserengine brauchen und mit ihr kommunizieren - so wie Selenium das tut. Das ist ansich schon alles andere als leichtgewichtig (du kannst aber zumindest headless Varianten der Browser einsetzen).
Meine Empfehlung wäre jedoch die Rohdaten zu verarbeiten.
Meine Empfehlung wäre jedoch die Rohdaten zu verarbeiten.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Re: JS-generierte Website speichern/verarbeiten
Wenn ich die Wahl habe, scheint es mir auf den ersten Blick auch einfacher, JSON zu verarbeiten als HTML. Meine Frage zielt aber auf Fälle, wo es nicht anders geht. Wie würde man denn konkret den headless mode von firefox zum verarbeiten und speichern einer aus JS zusammengebauten HTML Seite bewegen?
Ich habe mir für Firefox 79 ein neues Profil namens "headless" angelegt und versuche es so:
Zusammengestrickt habe ich mir das von
https://developer.mozilla.org/de/docs/M ... ne_Options
Was passiert? Im Terminal sehe ich
Und dann passiert nichts, die Datei wird zwar erstellt, dort kommt aber nichts an.
In der Zwischenzeit habe ich noch https://github.com/browsh-org/browsh gefunden, aber ich habe noch nicht verstanden, wie man das benutzt.
Ich habe mir für Firefox 79 ein neues Profil namens "headless" angelegt und versuche es so:
Code: Alles auswählen
valentina@kiste:~$ /opt/firefox/firefox -P "headless" -browser -new-instance -headless -url https://servers.minetest.net >> file.html
https://developer.mozilla.org/de/docs/M ... ne_Options
Was passiert? Im Terminal sehe ich
Code: Alles auswählen
*** You are running in headless mode.
In der Zwischenzeit habe ich noch https://github.com/browsh-org/browsh gefunden, aber ich habe noch nicht verstanden, wie man das benutzt.
Re: JS-generierte Website speichern/verarbeiten
So (einfach) funktioniert das leider nicht. Schau dir mal das Tutorial hier an, um eine Idee davon zu bekommen, wie du mit der Webseite interagieren musst:
https://developer.mozilla.org/en-US/doc ... nvironment
https://developer.mozilla.org/en-US/doc ... nvironment
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
-
- Beiträge: 2049
- Registriert: 18.03.2012 21:13:42
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: JS-generierte Website speichern/verarbeiten
Wenn es keine Events gibt welche ein dynamisches Nachladen ausloesen (beispielsweise Scrollen bis Tabellenende), dann kann man mit chromium arbeiten:
Bei Mozilla ein Featurerequest [1].
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1453229
Code: Alles auswählen
chromium --headless --dump-dom --virtual-time-budget=10000 https://servers.minetest.net
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1453229
Hilf mit unser Wiki zu verbessern!