Heise RSS Feed

Ich hätte es selbst nicht von mir gedacht, aber ich bin doch ein Feed-Leser, inzwischen haben sich gut 30 Feeds in meinem Reader eingefunden und es ist auch wirklich bequemer alles an einem Ort zu haben, statt jede Website einzeln nach neuen Informationen abklappern zu müssen. Aus dem selben Grund verwende ich ja auch ein Mail-Programm, statt für jeden Account die Website des Mail-Anbieters zu checken.

Nur ein einziger Feed hat mich bisher immer wieder zur Weißglut getrieben: ausgerechnet der Feed vom Heise Newsticker. Der Heise-Feed ist im Grunde genommen recht nutzlos, denn er beinhaltet nur die Überschrift des Artikels, nicht mal der übliche Anreißer auf der Website findet sich im Feed. Weil aber so mancher Heise-Redakteur doch ab und an seiner kreativen Ader freien Lauf lässt, ist nicht immer zu erkennen, ob der Artikel interessant ist oder nicht. Wenn man aber jeden Artikel, der interessant sein könnte, extra im Browser öffnen muss, ist das in etwa so, als ob das Mailprogramm nur die Überschrift der Mail überträgt und man die Mail erst zu sehen bekommt, wenn man auf die Website des Mail-Providers geht.

Kurzum: Irgendwann war ich das ganze satt und hab meine PHP-Kenntnisse zusammengekratzt, um einen kleines Programm zu schreiben, das den Heise-Feed lädt, dann die darin verlinkten Artikel von der Website abholt, die Artikel säubert, wieder in den Feed einfügt und das ganze dann dem Feed-Reader präsentiert. Weil Heise aber einen recht umfangreichen Feed hat, habe ich die kompletten Artikel auf die 20 aktuellsten Einträge beschränkt. Immerhin ist das ganze auch so schon stressig genug für den Server. Bei 60 Artikeln, die man gleichzeitig von der Heise-Website abholen wollte, würde wohl auch Heise irgendwann ein Veto einlegen. Das einzige Problem bisher: Bilder, die Heise selbst einbindet, sind nur als Platzhalter zu sehen, aber all zu oft kommt es ja auch nicht vor, dass Heise Bilder verwendet.

Nun ja, ohne weiteren Umschweife, hier ist der Code, einfach auf den Server werfen und den Feed-Reader drauf richten. Er ist nicht gerade elegant, weil eben schnell in PHP zusammengezimmert, aber elegantes PHP wäre ja auch wieder ein Oxymoron. Der Code ist frei, aber ich würd’ mich sehr über Feedback freuen.


<?php
// Heise Real-Feed Version 0.1

$ARTIKELDETAIL=20;

function getArtikel($artikelUrl) {

if(!$artikelRoh=file_get_contents($artikelUrl)) {
echo "Fehler: Artikel konnte nicht geladen werden";
}

$text="/<div class="meldung_wrapper">(.*?)</HEISETEXT>/si";
$reg="/<!-- cadv (.*) -->/si";

if (preg_match($text, $artikelRoh, $treffer1)) {
$treffer2=preg_replace($reg, "", $treffer1[0]);
$artikelFertig=strip_tags($treffer2, '<a> <p> <img>');
} else { echo "Fehler: Es konnte kein Artikeltext extrahiert werden "; }

return htmlspecialchars($artikelFertig);

}

$xml = new SimpleXMLElement(file_get_contents("http://www.heise.de/newsticker/heise-atom.xml"));

for ($i=0; $i <=$ARTIKELDETAIL ; $i++) {
$xml->entry[$i]->summary=getArtikel($xml->entry[$i]->id);
}
echo $xml->asXML();
?>

17 thoughts on “Heise RSS Feed”

  1. Hmm, wie wärs mit nem Cache? Dann gibt’s auch keine Probleme wegen dem Umfang. Kannst ja jeden extrahierten Artikel als id.txt speichern. Und am ende schauen, welche id’s nicht mehr im feed waren und die dann löschen.

  2. Ja, könnte ich, aber das lohnt den Aufwand nicht, mehr als 20 Feeds muss ich bei Heise nur selten lesen. Aber das wäre eine Option für Version 0.2

    In Version 0.1 löst der Autor ja immer nur das Problem, was ihn gerade richtig stört, bis es gerade gut genug ist. Danach werden die Probleme von anderen gelöst 😉

  3. Ich bekomme beim Aufruf des Scripts die folgende Fehlermeldung:
    Fatal error: Cannot instantiate non-existent class: simplexmlelement in /var/www/web5/html/tools/heise_realfeed.php on line 24

  4. Hallo Denny, ich hab es nicht erwähnt, aber für diesen Code ist PHP 5 notwendig, dort ist die Klasse aber standardmäßig vorhanden. Version 4 wollte ich mir persönlich nicht mehr antun.

  5. Die Idee ist an sich gut, aber ich denke, wenn das viele machen, wird es Probleme mit Heise geben. Es hat nämlich einen Grund, warum man die Webseite besuchen soll: Impressionen, ergo mehr Werbeeinnahmen. In der IT Branche benutzten so viele Leute Feedreader (denke ich mal), dass es sich heise nicht leisten kann auch den Inhalt mit in den Feed zu integrieren, weil dann gäbe es extrem weniger Besucher…
    Heise sagt auch ausdrücklich:

    Sie enthalten die Überschriften und Links im XML-Format. Sie können diese Datei mit einem Script auswerten und eine eigene Zusammenstellung produzieren.

    Bitte übernehmen Sie nicht die kompletten Newsticker-Meldungen, sondern nur die Überschriften.
    http://www.heise.de/news-extern/news.shtml

    yfyi

  6. Ich weiß, so ganz astrein ist das nicht, deswegen hole ich ja auch nur die letzten 20 Beiträge ab, außerdem bin ich seit bald 9 Jahren Abonnent der c’t 😉

    Ich weiß auch, dass ich keinen gottgegebenen Anspruch darauf habe, aber wenn Heise wenigstens die Anreißer in den Feed packen würde, die sie schon auf der Website haben, das würde ja genügen. Man kann ja auch Werbung in den Feed stecken, tun ja viele Anbieter, Textwerbung im Feed, die nicht blinkt und flasht, würde ich mir auch antun. Damit will ich mich nicht rausreden, aber auf deren Website sehe ich mit AdBlock auch nicht viel und so unfreundlich wie Heise ist sonst kein Feed-Anbieter.

  7. Hallo,

    ich habe ein Problem mit dem Aufbau meiner RSS-Feeds.
    Über eine ASP-Datei generiere ich die Feeds 
    http://www.server-tarife.de/specialsite/rss-feeds/d_default.asp
    Wenn ich unter http://feedvalidator.org den Aufbau der RSS-Feeds überprüfen lassen bekomme ich folgende Fehlermeldungen.
    1. Feeds should not be served with the “text/html” media type
    2. Self reference doesn’t match document location … … rel=”self” type=”application/rss+xml”/>
    Ich habe schon alle möglichen Änderungen vorgenommen aber nun weiß ich nicht mehr weiter.
    Könnt Ihr mir eventuelle schreiben was an diesem Aufbau falsch ist?
    Vielen Dank im vorraus.
    Daniela Fischer

  8. Hi, ich hab das script mal ein bissle erweitert. Ich hab Caching eingabaut und noch eine Überprüfung des Datums. Heise verändert öfter das Datum der Artikel, ohne das sich was verändert hat. Bei meinem Feedreader (Mail.app) zeigt er dann ca. die hälfte der Artikel als “aktualisiert” an, obwohl sie sich nicht ändern. Bis jetzt scheint er gut zu funktionieren, es fehlen leider nur einige Kommentare 🙂 Naja have fun:

    http://rafb.net/p/glj64k99.html

    elm

  9. Danke elm, aber das ist ja schon keine Weiterentwicklung mehr 😉 zuviel der Ehre also für mich.

    Nur, dass der Print-Text genommen wird, macht zwar das Parsen leichter, aber klickbare Links im Artikel wären schon schön.

    Vielleicht eine Option für Version 0.3 🙂

  10. Hallo elm, hallo atopal,

    vielen Dank für diesen Blog-Eintrag hier (die Idee, die Nachrichten einfach zu crawlen) … und natürlich für die klasse Umsetzung 🙂
    Funktioniert super. Sogar die alten Cache-Files werden wieder gelöscht.

Leave a Reply

Your email address will not be published. Required fields are marked *