Script: dynamisch Seiten zu statische Seiten
André Laugks
- php
Hallo!
Ich suche eine Lösung, die mir eine dynamische Webseite in eine statische Webseite umwandelt. Es sollen alle relativen Links verfolgt werden und danach die Seiten generiert werden.
Problem ist, ich mache nicht das HTML-Zeug, sondern nur das Dynamische an der Seite, deshalb sollte dieses Script sich wie ein Client verhalten. Änderungen am HTML sollte egal sein, wenn sich das Sctipt wie ein Client verhält.
Danke und MfG, André Laugks
Hoi,
Ich suche eine Lösung, die mir eine dynamische Webseite in eine
statische Webseite umwandelt. Es sollen alle relativen Links
verfolgt werden und danach die Seiten generiert werden.
Das einfachste sind da Offline-Reader. Die machen naemlich genau
das ;-)
Gruesse,
CK
Halihalo
Ich suche eine Lösung, die mir eine dynamische Webseite in eine statische Webseite umwandelt. Es sollen alle relativen Links verfolgt werden und danach die Seiten generiert werden.
Problem ist, ich mache nicht das HTML-Zeug, sondern nur das Dynamische an der Seite, deshalb sollte dieses Script sich wie ein Client verhalten. Änderungen am HTML sollte egal sein, wenn sich das Sctipt wie ein Client verhält.
Ich denke, dass für dieses Problem Perl besser geeignet wäre, da Perl bereits Module hierzu anbietet:
Mit perl funktioniert das etwa so:
mit LWP UserAgent und Request die Page in einen String oder ein array laden; oder mit dem Modul LWP::Simple (ist dann etwas einfacher, aber unschöner ;) ).
Die Links und relativen Pfade kannst du dann mit HTML::LinkExtor extrahieren und mit LWP::Simple wieder nachladen. So erstellst du deinen eigenen kleinen Offline-Reader.
Mit php wirst du wohl alles selber programmieren müssen ;-(
Hoffe, das dir dies was hilft
Philipp
Moin
Ich denke, dass für dieses Problem Perl besser geeignet wäre, da Perl bereits Module hierzu anbietet:
Nein, besser geeignet sind Tools wie wget: http://www.gnu.org/software/wget/wget.html
Mit php wirst du wohl alles selber programmieren müssen ;-(
Nein, du _kannst_ alles selber programmieren. Beispiele waren zumindest früher in den User notes zu fsockopen() in der PHP-Doku (keine Ahnung wo die jetzt hin sind).
Es geht aber mit fopen viel einfacher: fopen("http://blablabla"). Dann einfach alles einlesen, alles rausgreifen was nach URL klingt (schau mal im Archiv nach dem Regexp dafür) oder als href-Attribut in einem <a>-Element ist (natürlich musst du dann auch nach <script> <link> etc. schauen) und rekursiv verfolgen.
Eine dritte Möglichkeit die ich manchmal einsetze, wenn es nur darum geht den Aufbau von größtenteils statischen Seiten zu beschleunigen: Die Ausgabe cachen. Dazu schaust du am Anfang des Skriptes nach, ob bereits eine Cache-Datei existiert, und wenn ja, ob sie noch aktuell ist (im einfachsten Fall ist sie aktuell, wenn die Änderungszeit der Cache-Datei neuer ist, als die Änderungszeit der Skriptdatei, ggbf. musst du aber noch externe Datenquellen beachten) und wenn ja, gibst du einfach die Cache-Datei mit readfile() aus und beendest dich. Ansonsten startest du Output-Buffering mit ob_start(), lässt das Skript durchlaufen, holst dir den Inhalt des Puffers mit ob_get_contents(), schreibst den Inhalt in die Cache-Datei und sendest den Puffer an den Browser mit ob_end_flush().
--
Henryk Plötz
Grüße aus Berlin
Halihallo nach Berlin
Ich denke, dass für dieses Problem Perl besser geeignet wäre, da Perl bereits Module hierzu anbietet:
Nein, besser geeignet sind Tools wie wget: http://www.gnu.org/software/wget/wget.html
Hm. Das ist wie Maggi: fix-fertig und ungesund. Was ich sagen will: Selberprogrammieren ist die Device, sonst wär's ja nicht halb so interessant, nicht? - Klar, das es fix-fertige Softwarepakete gibt, aber davon ist hier gar nicht die Rede.
Mit php wirst du wohl alles selber programmieren müssen ;-(
Nein, du _kannst_ alles selber programmieren. Beispiele waren zumindest früher in den User notes zu fsockopen() in der PHP-Doku (keine Ahnung wo die jetzt hin sind).
Es geht aber mit fopen viel einfacher: fopen("http://blablabla"). Dann einfach alles einlesen, alles rausgreifen was nach URL klingt (schau mal im Archiv nach dem Regexp dafür) oder als href-Attribut in einem <a>-Element ist (natürlich musst du dann auch nach <script> <link> etc. schauen) und rekursiv verfolgen.
Hm. Ja. Ich gebe mich geschlagen, es ist mit php genauso schnell gemacht, wie mit perl ;-)
Eine dritte Möglichkeit die ich manchmal einsetze, wenn es nur darum geht den Aufbau von größtenteils statischen Seiten zu beschleunigen: Die Ausgabe cachen. Dazu schaust du am Anfang des Skriptes nach, ob bereits eine Cache-Datei existiert, und wenn ja, ob sie noch aktuell ist (im einfachsten Fall ist sie aktuell, wenn die Änderungszeit der Cache-Datei neuer ist, als die Änderungszeit der Skriptdatei, ggbf. musst du aber noch externe Datenquellen beachten) und wenn ja, gibst du einfach die Cache-Datei mit readfile() aus und beendest dich. Ansonsten startest du Output-Buffering mit ob_start(), lässt das Skript durchlaufen, holst dir den Inhalt des Puffers mit ob_get_contents(), schreibst den Inhalt in die Cache-Datei und sendest den Puffer an den Browser mit ob_end_flush().
Ja, das funktioniert ;)
Viele Grüsse aus der Schweiz
Philipp
Habe leider keinen Link, aber in einer der letzten Ausgaben von Internet Professional gab's ein Artikel + Script, such' mal im zdnet.de ...
pit