Ich suche einen Webseiten-Downloader der unter Linux läuft, der auch mit dynamischen Seiten klar kommt – er müsste also js-Skripte ausführen können.
Seiten mit JS wird schwierig - dafür brauchst du einen ausgewachsenen Browser. Und was soll der dann speichern? Einen Screenshot?
Man kann Chromium headless starten und die damit gerenderte Seite speichern.
Nicht mehr ganz aktuell, aber einen Versuch wäre es wert: https://www.httrack.com/page/2/en/index.html
Und was soll der dann speichern? Einen Screenshot?
Nein, es soll eine Kopie der gesamten Website heruntergeladen werden – in html.
Man kann Chromium headless starten und die damit gerenderte Seite speichern.
Das dürfte so ziemlich jeder Browser können – nur muss dann ein Sklave vor dem Bildschirm sitzen, der das tut, was ich gerne automatisieren würde.
Das Teil habe ich probiert – es kann es definitiv nicht.
Vermutlich müsste das, was ich suche, irgend eine NodeJS-Geschichte sein.
Wget.
wget -mpEk "url"
Das dürfte so ziemlich jeder Browser können – nur muss dann ein Sklave vor dem Bildschirm sitzen, der das tut, was ich gerne automatisieren würde.
Ich schrieb bewusst „headless“ – es lässt sich prima scripten.
wget -mpEk "url"
Seit wann führt wget JS aus?
Und was soll der dann speichern? Einen Screenshot?
Nein, es soll eine Kopie der gesamten Website heruntergeladen werden – in html.
Das würde nur in trivialen Ausnahmefällen funktionieren. Dynamische Webseiten sind ein verteiltes Programm: ein Teil läuft im Browser, der Rest auf einem oder mehreren Servern. Du bekommst nur den Browser-Teil. Wie soll z.B. eine der z.Zt. beliebten "endlos scrollenden Seiten" abgespeichert werden?
Dazu kommt noch, dass viele Serverbetreiber das automatische Abgrasen ihrer Seiten nicht mögen und deshalb Captchas einsetzen oder z.B. Cloudflare vorschalten.
Für einige Seiten gibt es spezielle Scraper (z.B. für youtube). Um welche Seite geht es denn?
Ich suche einen Webseiten-Downloader der unter Linux läuft, der auch mit dynamischen Seiten klar kommt – er müsste also js-Skripte ausführen können.
Und was macht man mit Seiten die dynamisch Daten von einem Backend bekommen? Und wieso sollte der Downloader js Skripte ausführen? Das macht nach wie vor der Browser. Der Downloader muss nur alle Skripte runterladen.
Nicht mehr ganz aktuell, aber einen Versuch wäre es wert: https://www.httrack.com/page/2/en/index.html
Funktioniert aber mM. immer noch am besten. Das Projekt wird scheinbar nach längerer Pause wieder weitergeführt, und findet sich jetzt aber auf https://github.com/xroche/httrack. Muß man sich aber selbst zusammenbauen, und läuft mW. derzeit nur unter Linux, bzw. ohne GUI nur als Kommandozeilentool. Aber soviel mehr kann es wohl zumindest bei meinen Tests auch nicht.
Alternativ wäre noch Cyotek Webcopy zu erwähnen, was vergleichbar mit HTrack ist. Was das eine nicht kann, kann vielleicht das andere ... (gibts aber, wenn ich mich noch recht erinnere, nur für Windows, lief aber bei meinen Tests auch unter wine).
Ich suche einen Webseiten-Downloader der unter Linux läuft, der auch mit dynamischen Seiten klar kommt – er müsste also js-Skripte ausführen können.
Es kann da keinen universellen Downloader geben.
Mit der JS-Kacke (allgemeiner: mit allen aktiven Inhalten) hat man die Kontrolle über seinen Rechner weitgehend verloren. Schützen kann man sich nur dadurch, dass man aktive Inhalte eben nicht ausführt.
Was aber natürlich inzwischen dazu führt, dass man auch die wenigen echten Inhalte vieler Webseiten kaum noch rauspicken kann.
Die am Besten funktionierende Möglichkeit, die ich kenne, ist der "ferngesteuerte Browser". Aber man muß natürlich die "Steuerung" an jede konkrete Site anpassen. Und wenn man damit fertig ist, ändert der Gegner wieder was und man fängt von vorn an...
Wie soll ein relativ doofer und unflexibler Downloader das leisten können?
Aber egal, das alles ist nur ein Zwischenspiel. Fast überall muss man sich inzwischen in irgendeiner Form anmelden. Es ist absehbar, dass es praktisch durchgängige Praxis wird, das Websites ohne Anmeldung überhaupt keine Information mehr rausrücken.
So wie es heute schon viele gibt, die ohne aktives JS nicht mal mehr eine Fehlermeldung liefern, sondern nur noch eine vollkommen leere Seite.
Dynamische Webseiten sind ein verteiltes Programm: ein Teil läuft im Browser, der Rest auf einem oder mehreren Servern.
Ähnlich bei Downloads. Bei mir sind sie außerhalb des Document-Root-Verzeichnisses gespeichert, da kommt man per HTML (Direktlinks) nicht ran.
Aber wozu braucht man fremde Webauftritte als Offlineversion?
Aber wozu braucht man fremde Webauftritte als Offlineversion?
Zum Archivieren. Ist dir mal aufgefallen, wieviele Seiten von früher™ mit der Zeit verschwunden sind?
Ein Problem dabei ist, dass viele heutige Seiten so zusammengeklickt werden, dass sie beispielsweise Bilder erst nachladen, wenn diese angezeigt werden sollen; wenn man also soweit runtergescrollt hat. Wenn man die statische Seite samt Scripten mittels etwa wget oder auch mit der „Seite speichern“-Funktion des Browser lädt, hat man diese Bilder dann nicht, und wenn die ursprüngliche Seite weg ist, bekommt man sie auch nicht. Und wenn die Information in den Bildern wichtig war (Schaltpläne, Anschlussbelegungen, […]), hat man halt nutzlosen Datenmüll. Um die Bilder mitspeichern zu können, müssen die entsprechende Scripte beim Laden der Seite ausgeführt werden.
die Information in den Bildern wichtig war
Wenn mir etwas wichtig ist, z.B. ein Schaltplan, dann speichere ich es sofort und direkt.
Du bist halt nicht die Referenz, nach der sich alle Anderen richten.
Dynamische Webseiten sind ein verteiltes Programm: ein Teil läuft im Browser, der Rest auf einem oder mehreren Servern. Du bekommst nur den Browser-Teil.
Ich meine Seiten wie www.telepolis.de, die die Links auf Artikel dynamisch erzeugen. Die Linkziele selbst sind dann statisch.
Funktioniert aber mM. immer noch am besten.
Dann probier mal www.telepolis.de damit herunterzuladen…
Ich schrieb bewusst „headless“ – es lässt sich prima scripten.
Sorry, das hatte ich überlesen. Ich kann mir allerdings nicht recht vorstellen, wie man es schafft, z.B. www.telepolis.de (in Teilen) herunterzuladen.
Aber wozu braucht man fremde Webauftritte als Offlineversion?
Zum Bleistift, um statistische Analysen über die Texte zu machen…
Wenn Du des Englischen mächtig bist, google mal nach "headless chrome crawler".
Warum soll ich das machen. Vollkommen uninteressant für mich, und habe auch nicht geschrieben, daß das mit allem klar kommt.
Wenn Du des Englischen mächtig bist, google mal nach "headless chrome crawler".
Naja, das ist das Konzept des "ferngesteuerten Browsers". Man muß halt die "Fernsteuerung" für jede Website basteln und ständig den Änderungen auf dieser Site anpassen.
Das konkret im Thread erwähnte Beispiel Telepolis ist da noch sehr pflegeleicht. Die machen nicht allzu oft was. Kostet schließlich auch auf ihrer Seite Arbeit.
Aber wenn plötzlich massenhaft automatische Downloads erfolgen würden, ist natürlich schwerstens zu erwarten, dass sehr schnell was geändert wird. Erst Nadelstiche, dann immer mehr.
Gegen einzelne speziell erstellte Downloader machen die nix, weil es ihnen nicht mal auffällt, dass die existieren. Sowas geht einfach im Rauschen der Traffic-Überwachung unter. Sobald aber etwas auch für die Masse der Idioten leicht verfügbares und benutzbares existiert, und das dann auch genutzt wird, fällt das natürlich auf. Und natürlich erfolgen dann die entsprechenden Gegenmaßnahmen.
Wie sowas bei wirklich hochdynamisch "besaugten" und "gepflegten" Sites abläuft, kann man z.B. bei YT verfolgen. Da übrigens auch die ersten Ansätze zum Zwangs-Accounting.
Und das alles wird so weiter gehen. Der ewige Kampf der Content-Besitzer mit denen, die den Content entgegen der Intentionen der Besitzer (oder vielleicht auch nichtmal entgegen, sondern bloß darüber hinaus) nutzen wollen.
Alles nix wirklich Neues.
Jens G. schrieb:
Warum soll ich das machen.
Um zu sehen, dass httrack das ganz einfach nicht kann…
Habe ich in der Richtung irgendwas behauptet?
Jens G. schrieb:
Warum soll ich das machen.
Um zu sehen, dass httrack das ganz einfach nicht kann…
Habe ich in der Richtung irgendwas behauptet?
Ach so, du suchst Streit. Darauf kann ich verzichten.
Seit wann führt wget JS aus?
Irgend wie macht das für mich auch überhaupt keinen Sinn! Wozu soll der Downloader das Script ausführen. Das ist doch clientseitiges Scripting und wird doch erst beim Betrachten der Seite im Browser ausgeführt. Was soll den der Downloader ausführen z.B. auf einer Seite mit Rechenfunktionen in JS?
Eher wird doch ein Webserver mit PHP etc. benötigt, wenn die Seiten entsprechenden Code serverseitig ausführen. Beispiel: SELFHTML. Da kann man gleich das ganze Paket inkl. Server runterladen. Ich verwende lokal für mich auf dem Rechner gerne den in PHP eingebauten Mini-Webserver.
ciao
Marci
Fast überall muss man sich inzwischen in irgendeiner Form anmelden.
Zwar ein wenig OT, aber mich nerven viele Foren, bei denen man ohne Anmeldung keinerlei Grafiken, Code etc. anschauen kann. Das ist Mist, und wenn möglich lasse ich solche Sites links liegen.
ciao
Marci
Irgend wie macht das für mich auch überhaupt keinen Sinn! Wozu soll der Downloader das Script ausführen.
Es gibt Seiten, die erzeugen die Links, auf die verwiesen wird, per js auf dem Client. Wenn der Downloader das nicht auflöst – oft per Ajax –, dann kann man mit der heruntergeladenen Seite nicht viel anfangen. Beispiel: www.telepolis.de
Irgend wie macht das für mich auch überhaupt keinen Sinn! Wozu soll der Downloader das Script ausführen. Das ist doch clientseitiges Scripting und wird doch erst beim Betrachten der Seite im Browser ausgeführt. Was soll den der Downloader ausführen z.B. auf einer Seite mit Rechenfunktionen in JS?
Schrieb ich doch recht ausführlich: einige Seiten basieren heute auf Scripten, die dynamisch Sachen genau dann laden und anzeigen, wenn sie im Browser sichtbar werden. Diese Sachen (Bilder, Diagramme, Textboxen, komplette Inhalte, …) fehlen, wenn man plump die Seite lädt, ohne die Scripte auszuführen – weil’s eben diese Scripte sind, die den Inhalt laden, den man sichern möchte. Noch nie ’ne Seite gesehen, die Content nachlädt, wenn man nach unten scrollt? Einfach mal beispielsweise Youtube anschauen und schnell runterscrollen.
Irgend wie macht das für mich auch überhaupt keinen Sinn!
Du bist kein Programmierer, stimmt's?
Wozu soll der Downloader das Script ausführen.
Weil er sonst nicht an die Kekse kommt.
Das ist doch clientseitiges Scripting und wird doch erst beim Betrachten der Seite im Browser ausgeführt.
Genau. Aber den Inhalt des Scipts bestimmt der Anbieter der Web-Site, der kann darin im Prinzip fast machen was er will. Jedes JS-Script ist im Prinzip ein "Trojanisches Pferd", das der Anbieter der Website vor dein Tor fährt. Du hast nur die Wahl zu entscheiden, ob du es durch's Tor einlassen willst oder nicht. Wenn du es nicht einlässt, wird die Webseite nicht so aussehen, wie sie es könnte. Weil halt das Script fehlt, was den gewünschten Inhalt erst herunterlädt und in das DOM der angezeigten Seite einfügt.
Eher wird doch ein Webserver mit PHP etc. benötigt, wenn die Seiten entsprechenden Code serverseitig ausführen.
Das gibt es natürlich auch noch. Ist aber derzeit eher nicht so relevant.
Aber gerade wieder im Kommen. Warum? U.a.: um es einfachen Downloadern noch schwerer zu machen. Die können nämlich den clientseitigen Code nicht nur ausführen, sondern auch analysieren. Gibt es aber eine (für den Client nicht einsehbare) Softwarekomponente auf dem Server, wird es noch viel schwerer (praktisch fast unmöglich), das Zeug zu analysieren.
Noch nie ’ne Seite gesehen, die Content nachlädt, wenn man nach unten scrollt?
Nee, natürlich nicht. ;-)
Im Ernst: was soll in Deinem Beispiel der arme Downloader machen? Die Seite/Liste so lange laden, bis nix mehr geht? Das kann dann recht viel Content sein...
Ich muss zugeben, mir ist gerade eingefallen, dass ich auch mal so eine Seite hatte mit JS. Und ich gebe zu, ich habe es dann irgend wann sein lassen, das offline zu speichern. War mir zu blöd. Und ich denke, da wird man wohl ums Handanlegen nicht herum kommen, oder?
ciao
Marci
Du bist kein Programmierer, stimmt's?
Falsch. Und ohne mich hier outen zu wollen: ich programmiere für meine eigenen Sache sowohl serverseitig als auch clientseitig.
ciao
Marci
Es gibt auch zig Seiten wo die Inhalte nicht einfach downloadbar sein weil wohl zu geheime Bilder oder Infos meist oben dabei sind, wie z.B. das Logo des Seitentreibers oder das Impressum, da kann man bei manchen das nicht mal kopieren, aber Bilder sind es auch nicht.
Der Seitenquelltext gibt aber auch manches Mal zu denken, dort sucht man sich auch den Wolf. Manuelles Runterladen durch Speichern mit dem Browser u. dann gleich offline testen ob alles dabei ist.
Im Ernst: was soll in Deinem Beispiel der arme Downloader machen?
Das Javascript ausführen und die Seite im Speicher so aufbauen, wie sie vom Browser angezeigt würde und statt sie anzuzeigen, den html-Text in eine Datei schreiben…
Marci W. schrieb:
Im Ernst: was soll in Deinem Beispiel der arme Downloader machen?
Das Javascript ausführen und die Seite im Speicher so aufbauen, wie sie vom Browser angezeigt würde und statt sie anzuzeigen, den html-Text in eine Datei schreiben…
Macht Sinn ;-) <schäm>
ciao
Marci
Ich meine Seiten wie www.telepolis.de, die die Links auf Artikel dynamisch erzeugen. Die Linkziele selbst sind dann statisch.
Warum will man sich diesen Propagandamüll für die Wagenknecht Partei runterladen?
Setz mal ein "curl -s https://www.telepolis.de/ | grep href | grep feature" ab. Da sind ganz normale Links drin:
Warum will man sich diesen Propagandamüll für die Wagenknecht Partei runterladen?
Damit DU endlich einen Grund hast, deine schlechte Laune raus zu kotzen.
Frage an die Experten:
In JS kann man ja ein komplettes Dom aufbauen – wie schafft man es, diesen Code aus dem Browser zu exportieren? Eigentlich müsste das doch per Debugger irgendwie machbar sein. Hat jemand eine Idee?
Damit DU endlich einen Grund hast, deine schlechte Laune raus zu kotzen.
Kriegst du keine schlechte Laune von stalinistischen Loopboxen?
Moritz schrieb:
Ich meine Seiten wie www.telepolis.de, die die Links auf Artikel dynamisch erzeugen. Die Linkziele selbst sind dann statisch.
Gerade Telepolis[1] bereitet wenig Schwierigkeiten, geht ohne JS und ist sogar mit Text-Browsern (w3m, lynx, links2, elinks - können alle kein JS) benutzbar. Die a-href sind statisch.
[1] und auch heise.de
Nur wenn ich einen Link im Browser kopiere und den dann im Seitenquelltext suche, finde ich ihn nicht.
Ähnliches gilt auch für die Schweizer Weltwoche.
Nachtrag: Scriptbeispiel aus telepolis:
1 |
|
2 |
|
3 |
|
Also einwandfrei ein Skript…
G. K. schrieb:
Lies einfach weniger Scheiße.
Schreib einfach weniger Unsinn.
Dann probier auf gar keinen Fall den curl von mir.
Frage an die Experten: Beitrag "Re: Webseiten-Downloader gesucht"
Nur wenn ich einen Link im Browser kopiere und den dann im Seitenquelltext suche, finde ich ihn nicht.
Dann suchst du falsch.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
Die Telepolis-Seite ist nur ein Beispiel für diese Art Seiten. Ich möchte vermeiden, aus solchen Kandidaten die Links zu Fuß rauszupulen. Das Script macht das, es muss nur ausgeführt werden…
Moritz schrieb:
In JS kann man ja ein komplettes Dom aufbauen – wie schafft man es, diesen Code aus dem Browser zu exportieren? Eigentlich müsste das doch per Debugger irgendwie machbar sein. Hat jemand eine Idee?
Google halt mal nach "dump dom".
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.