Inhalte anderer Webseiten auslesen und anpassen
Dennis Horn
- cgi
Hallo zusammen,
ich möchte ein Perlskript schreiben, mit dem ich die Inhalte einer HTML-Datei, die auf einem fremden Server liegt, einlesen und so bearbeiten kann, dass diese Inhalte dem Layout meiner Seite entsprechen.
Wie schaffe ich es in Perl, die Inhalte dieser Seite am besten in einen Array einzulesen, den ich dann bearbeiten kann?
Grüße,
Dennis
ich möchte ein Perlskript schreiben, mit dem ich die Inhalte einer HTML-Datei, die auf einem fremden Server liegt, einlesen und so bearbeiten kann, dass diese Inhalte dem Layout meiner Seite entsprechen.
Du bist also nicht in der Lage, eigene Inhalte zu schaffen?
Wie schaffe ich es in Perl, die Inhalte dieser Seite am besten in einen Array einzulesen, den ich dann bearbeiten kann?
Und auch nicht in der Lage, so eine simple Programmieraufgabe zu lösen?
Und dann auch noch Hilfe anfordern, wenn Du das Urheberrecht verletzen willst?
Ich packs nicht.
Hallo zusammen,
Antworten auf die Fragen, was das Urheberrecht und das "Eigene-Inhalte-Schaffen" angeht: Ich bin Redakteur bei einem Radiosender und dort auch für die Internetseiten zuständig. Wir gehören einem Senderverband an. Der Hauptsender stellt auf seiner Internetseite eine HTML-Datei mit aktuellen Verkehrsinformationen (also Staus etc.) zur Verfügung, allerdings in einem Layout, das absolut nicht zu unserem passt. Bisher haben wir diese Seite über Frames eingebunden, möchten sie aber nun komplett unserem Layout anpassen. Urheberrechtlich ist das einwandfrei, weil wir eben Teil dieses Senderverbandes sind. Das hat nichts mit Klau zu tun.
Simpel ist die Programmieraufgabe für mich nicht; sonst hätte ich die Frage nicht gestellt.
Grüße,
Dennis
Hi,
Antworten auf die Fragen, was das Urheberrecht und das "Eigene-Inhalte-Schaffen" angeht: Ich bin Redakteur bei einem Radiosender und dort auch für die Internetseiten zuständig. Wir gehören einem Senderverband an. Der Hauptsender stellt auf seiner Internetseite eine HTML-Datei mit aktuellen Verkehrsinformationen (also Staus etc.) zur Verfügung, allerdings in einem Layout, das absolut nicht zu unserem passt. Bisher haben wir diese Seite über Frames eingebunden, möchten sie aber nun komplett unserem Layout anpassen. Urheberrechtlich ist das einwandfrei, weil wir eben Teil dieses Senderverbandes sind. Das hat nichts mit Klau zu tun.
Wie du dir eine Seite holst, weißt du, oder? Wenn nicht, frag nochmal.
Wenn ja, wie sieht denn die Struktur des Dokumentes aus? Ist der Inhalt eindeutig von den restlichen Onformationen getrennt? Hat der Radiosender ein Cms, über das man vielleicht auf die Daten ohne Informationen über das Design rankommt?
Ändert sich die Struktu der Seite oft? Wenn nicht, lässt sich da notfalls sicher etwas mit einigen Regexes machen.
Simpel ist die Programmieraufgabe für mich nicht; sonst hätte ich die Frage nicht gestellt.
Simpel vielleicht nicht, aber IMHO auch nicht sonderlich schwer.
mfg Andres Freund
Hallo Andres,
Wie du dir eine Seite holst, weißt du, oder? Wenn nicht, frag nochmal.
Genau darum geht es. Wie kann ich den Quellcode der Seite in einen Array laden? Die Adresse der Seite ist http://www.radionrw.de/verkehr/vknrw.htm - ein CMS gibt es nicht. Sobald ich den Quellcode geladen habe, kann ich den Rest erledigen. Da weiß ich, wie's geht.
Grüße,
Dennis
Hi Dennis,
Wie kann ich den Quellcode der Seite in einen Array laden? Die Adresse der Seite ist http://www.radionrw.de/verkehr/vknrw.htm - ein CMS gibt es nicht. Sobald ich den Quellcode geladen habe, kann ich den Rest erledigen. Da weiß ich, wie's geht.
wenn Du wirklich "die harte Tour" gehen und das HTML-Dokument direkt analysieren willst, dann würde ich Perl, LWP::Simple und ein CPAN-Modul zum Parsen der HTML-Struktur nehmen.
Aber denke daran - es wird weh tun, wenn der Hauptsender Dich "auflaufen läßt". Und das kann nicht nur eine Formatänderung sein, auch eine Änderung des URL-Schemas ... ("cool URIs don't change, but sadly, real URIs do ...")
Viele Grüße
Michael
Hi Dennis
Der Hauptsender stellt auf seiner Internetseite
liegen Eure Domains nicht auf einem gemeinsamen Server?
(Es wäre schön, die ggf. störungsanfällige, langsame und traffic kostende zusätzliche Kommunikationsverbindung bei jedem Zugriff - die Daten sollen ja zeitnah sein? - vermeiden und durch einen Dateizugriff ersetzen zu können.)
eine HTML-Datei mit aktuellen Verkehrsinformationen (also Staus etc.) zur Verfügung, allerdings in einem Layout, das absolut nicht zu unserem passt.
Das ist ein schöner Anwendungsfall für das Prinzip, Content und Visualisierung streng voneinander zu trennen. Denn Du willst ja nicht mühsam das ganze HTML-Zeug entfernen bzw. automatisch umschreiben - Du willst an die Rohdaten ran!
Frage Deinen Hauptsender, ob er Dir eine layout-befreite (CSV-artige) alternative Schnittstelle (z. B. ein URL) zu diesen Daten bereit stellt; dafür sollte er selbst sinnvollerweise seine HTML-Präsentation dynamisch zu den darstellungsneutral gespeicherten Rohdaten hinzu generieren, also nicht eine statische HTML-datei direkt editieren etc. Falls beispielsweise ein CMS genutzt wird, müßte Dir der Hauptsender einfach eine alternative, formatfreie Visualisierung anbieten - das geht dann möglicherweise mit sehr wenig Aufwand (aber eben auf seiner Maschine, nicht auf Deiner).
Bisher haben wir diese Seite über Frames eingebunden
Über Domaingrenzen hinweg? Nicht schön ...
möchten sie aber nun komplett unserem Layout anpassen.
Klar.
Simpel ist die Programmieraufgabe für mich nicht; sonst hätte ich die Frage nicht gestellt.
Die Aufgabe wäre auch für mich nicht "simpel", wenn Du so schlechte Startbedingungen hast.
Die Rohdaten abzusaugen (mit HTTP oder FTP, beides z. B. als Module für Perl verfügbar; denkt daran, ein Authentifizierungsschema vorzusehen, damit nicht beliebig viele Trittbrettfahrer sich der Daten "bedienen" ...) ist nicht wirklich das Problem.
Eher schon das Entfernen der Verpackung - denn wenn Dein Hauptsender plötzlich Spaß daran findet, _sein_ Layout mal eben unangekündigt zu ändern, dann fällt Dein Programm heftig auf die Nase, und das vor den Augen aller Besucher. :-(
Kontakte Deinen Hauptsender und mache ihm klar, daß Du eine neutrale Darstellung dieser Daten brauchst und daß diese für Dich eine verbindliche (!) Schnittstelle darstellen muß, die nur nach rechtzeitiger (!) Ankündigung geändert werden darf.
Macht am besten einen richtigen Nutzungsvertrag darüber. Wie lange wirst Du jeweils brauchen, um Dein Programm anzupassen, wenn der Hauptsender sein Datenformat ändert? Davon hängt beispielsweise die Vorwarnfrist ab ...
Was das konkrete Format angeht: Die Aufgabe sieht so aus, als wäre eine einfache XML-DTD ein wunderbarer Lösungansatz.
Wobei die DTD so primitiv sein sollte, daß sie gerade mal eine Handvoll Felder in fester Reihenfolge enthalten wird (was braucht Ihr denn? Datum und Uhrzeit, Text, Ortsangabe, vielleicht noch 2-3 weitere Felder), so daß Du diese in Perl mühelos parsen kannst und keinen komplexen XML-Parser brauchst. Das Format braucht nicht mehr zu können als CSV - aber XML zu verwenden ist hier eine Entscheidung zugunsten künftiger Anwendungsfälle.
Mache dem Hauptsender klar, daß Du ggf. nicht der einzige potentielle "Konsument" dieser Daten bist und daß es sich lohnen sollte, ein offizielles Transfer-Format für diese Daten zu spezifizieren.
Deine Aufgabenstellung ist spannend - mehr davon!
Viele Grüße
Michael
Hallo Michael,
liegen Eure Domains nicht auf einem gemeinsamen Server?
leider nicht. Jeder Sender im Verband hat seine eigene Seite.
Das ist ein schöner Anwendungsfall für das Prinzip, Content und Visualisierung streng voneinander zu trennen. Denn Du willst ja nicht mühsam das ganze HTML-Zeug entfernen bzw. automatisch umschreiben - Du willst an die Rohdaten ran!
Ich muss annehmen, dass der Umweg darüber, den Hauptsender zu bitten, eine layout-befreite Variante bereitzustellen, nicht möglich ist. Problem: Ich glaube, das ist eine HTML-Datei (http://www.radionrw.de/verkehr/vknrw.htm), die zwar öffentlich zugänglich gemacht werden könnte, aber eigentlich nur von den Nachrichtenredakteuren genutzt wird, die die Staus vortragen. Deshalb ist auch eine Änderung des Layouts wenig wahrscheinlich. Wir wären AFAIK die einzigen, die das nutzen würden.
Den HTML-Wust zu entfernen und so an die Rohdaten zu kommen, ist auch nicht das Problem. Mein Problem liegt nur darin, den Quelltext über HTTP in einen Array zu laden.
Grüße,
Dennis
Hi Dennis,
Mein Problem liegt nur darin, den Quelltext über HTTP
http://www.darkspell.com/references/lwpcook.html;
das allererste Beispiel reicht für Deine Zwecke.
"LWP" ist in CPANs "libwww", was Du ggf. installieren mußt, falls Du ein älteres Perl hast.
in einen Array zu laden.
Ein solches Dokument ist zunächst mal nur ein String, ohne Zeilenstruktur.
Viele Grüße
Michael
Hallo Michael,
http://www.darkspell.com/references/lwpcook.html;
das allererste Beispiel reicht für Deine Zwecke.
"LWP" ist in CPANs "libwww", was Du ggf. installieren mußt, falls Du ein älteres Perl hast.
Genau das ist es. Ich danke dir vielmals für die Hilfe!
Liebe Grüße,
Dennis
Hi Dennis,
ich möchte ein Perlskript schreiben, mit dem ich die Inhalte einer HTML-Datei, die auf einem fremden Server liegt
und deren Besitzer mit Deinem Vorgehen natürlich einverstanden ist?
einlesen
d. h. über eine Kommunikationsprotokoll ansprechen - welches schwebt Dir da vor?
und so bearbeiten kann, dass diese Inhalte dem Layout meiner Seite entsprechen.
Das dürfte ein rein handwerkliches Problem sein.
Wie schaffe ich es in Perl,
Beantworte die beiden Fragen weiter oben - dann sehen wir weiter.
Viele Grüße
Michael
Hallo Michael,
und deren Besitzer mit Deinem Vorgehen natürlich einverstanden ist?
ja. Siehe andere Antwort.
d. h. über eine Kommunikationsprotokoll ansprechen - welches schwebt Dir da vor?
Ebenhier habe ich keine Ahnung. Ich bin auf der Suche nach der einfachsten Lösung, so etwas in einem Perlskript umzusetzen. Die HTML-Datei lässt sich über eine http-Adresse in jedem Browser ansteuern.
Grüße,
Dennis