selfhtml.de - Alles für den Webmaster!

 

RSS-Feeds erstellen: RSS-Feeds für die eigene Webseite erstellen

Um einen News-Feed für die eigene Webseite zu erstellen kann man in klassischer Weise einen Text-Editor benutzen. Dabei ändert die erstellte Datei bei jeder Neuigkeit seiner Webseite. Auf diese Weise kann man auch auf Neuigkeiten bei anderen hinweisen die man selber für interessant hält. Der Vorteil ist hier das man volle Kontrolle auf die Einträge hat und unterschiedlichste Inhalte von unterschiedlichen Orten integrieren kann. Nachteilig ist, daß man sich stets manuell um die Aktualität seines News-Feeds kümmern muß.


In vielen Fällen wird einem die Erstellung eines News-Feeds durch das Content Management System abgenommen, der Feed wird automatisch beim Schreiben eines neuen Beitrages auf der Webseite erzeugt. Vorteil: keine Handarbeit notwendig, Nachteile: Nur das was auf der eigenen Webseite passiert kann abgebildet werden und man hat keinen Einfluß auf die konkrete Gestaltung des Feeds so zum Beispiel wie ausführlich die Texte im Feed sind.


Weiterhin kann man RSS-Feeds auch durch eine Serverseitige Skriptsprache wie zum Beispiel PHP selbst erstellen, man hat dabei mehr Kontrolle über die Inhalte und kann auch Dinge einarbeiten welche nicht zum eigenen Webauftritt gehören. Ein Vorteil hierbei ist, daß man den XML-Code dynamisch zusammenstellen kann, zum Beispiel mit einem PHP-Paket wie DOM as das etwas fehleranfällige Editieren des XML-Codes ersetzt. Im nachfolgenden Abschnitt gehen wir auf diese Möglichkeiten noch detailierter ein.


RSS-Feeds durch das Parsen bestehender Webseiten erzeugen



Durch die Analyse und Verarbeitung bestehender Webseiten welche über keine Feeds verfügen, lassen sich für diese Seiten solche erzeugen oder bestehende Feeds ohne bzw. mit zu kurzem Text lassen sich verbessern. Die generelle Prozedur die unser nachfolgendes PHP-Skript durchläuft kann man in etwa so zusammenfassen:



  • fetchen (file_get_contents)

  • validieren (Tidy::cleanRepair)

  • parsen (DOMXPath::query)

  • erstellen (DOMDocument)

  • speichern (file_put_contents)



Für unseren News-Feed laden wir die Webseite mit file_get_contents($url,'r') herunter und benutzen anschließend die Tidy-Bibliothek um daraus ein XHTML konformes Dokument zu erstellen. Von der Webseite speichern wir lokal einen md5-Hash in einer Datei. Hier der Beispiel-Code für das Herunterladen der Webseite:



# check for file existence
if (checkChanges()) {
$html = file_get_contents("http://www.selfhtml.de:80/magazin/index.php");
file_put_contents('magazin.html',$html);
# now check for md5-hash
if (checkChanges()) {
$html = file_get_contents("magazin.html",'r');
file_put_contents('magazin.md5',md5($html));



Natürlich sollten die Datein nicht im gleichen Ordner wie das Skript gespeichert werden, aber der Einfachheit halber wollen wir es in diesem Beispiel dabei belassen. Bei einem jedem weiteren Aufruf unseres Skriptes wird überprüft wann das letzte Mal diese md5-Hash-Datei erzeugt wurde und wenn dies schon einmal am gleichen Tag geschehen ist wird darauf verzichtet die Webseite erneut herunterzuladen. Andernfalls wird die lokale Datei aktualisiert und es wird mittels des md5-Hashes in einfacher Weise verglichen ob sich der Inhalt geändert hat. Erst wenn dies der Fall ist, wird ein neuer RSS-Feed, eventuell durch das anschließende Parsen weiterer Webseiten, erstellt. Durch diese Aktualitätstests wird sichergestellt, daß die Webseite nicht bei jedem Zugriff auf das Skript erneut heruntergeladen und analysiert wird. Wenn ein erneutes Parsen nicht notwendig ist, kann auf eine gespeicherte Kopie der RSS-Datei zugegriffen werden. Hier die Funktion die das leistet:



function checkChanges() {
$md5file = "magazin.md5";
$htmlfile = "magazin.html" ;
if (!file_exists($md5file)) {
return true ;
}
if (date("Y-m-d") != date("Y-m-d",filemtime($md5file))) {
return true ;
}
$html = file_get_contents($htmlfile,'r');
$md5Old = trim(file_get_contents($md5file,'r'));
$md5New = md5($html);
if ($md5New != $md5Old) {
return true ;
}
return false ;
}

Weiter

Weitere Seiten im Artikel "RSS-Feeds erstellen"