JS-generierte Website speichern/verarbeiten

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Valentina
Beiträge: 6
Registriert: 03.08.2020 11:54:04

JS-generierte Website speichern/verarbeiten

Beitrag von Valentina » 13.08.2020 05:10:15

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.

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: JS-generierte Website speichern/verarbeiten

Beitrag von cronoik » 13.08.2020 20:25:49

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?
Hilf mit unser Wiki zu verbessern!

Valentina
Beiträge: 6
Registriert: 03.08.2020 11:54:04

Re: JS-generierte Website speichern/verarbeiten

Beitrag von Valentina » 13.08.2020 21:53:03

Geheim ist es nicht, obs peinlich ist mußt du für dich selber beantworten :P 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).

Benutzeravatar
TRex
Moderator
Beiträge: 8335
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: JS-generierte Website speichern/verarbeiten

Beitrag von TRex » 13.08.2020 22:00:53

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.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Valentina
Beiträge: 6
Registriert: 03.08.2020 11:54:04

Re: JS-generierte Website speichern/verarbeiten

Beitrag von Valentina » 15.08.2020 06:57:45

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:

Code: Alles auswählen

valentina@kiste:~$ /opt/firefox/firefox -P "headless" -browser -new-instance -headless -url https://servers.minetest.net >> file.html
Zusammengestrickt habe ich mir das von

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.
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.

Benutzeravatar
TRex
Moderator
Beiträge: 8335
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: JS-generierte Website speichern/verarbeiten

Beitrag von TRex » 15.08.2020 08:06:04

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
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: JS-generierte Website speichern/verarbeiten

Beitrag von cronoik » 15.08.2020 08:41:12

Wenn es keine Events gibt welche ein dynamisches Nachladen ausloesen (beispielsweise Scrollen bis Tabellenende), dann kann man mit chromium arbeiten:

Code: Alles auswählen

chromium --headless --dump-dom  --virtual-time-budget=10000  https://servers.minetest.net
Bei Mozilla ein Featurerequest [1].

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1453229
Hilf mit unser Wiki zu verbessern!

Antworten