Die Verschrottung deiner Weise in RSS aussortieren
| by Dennis Pallett | December 11, 2004
Einleitung
RSS ist eins die heißesten Technologien im Augenblick, und sogar erhalten grosse Netzverleger (wie die New York Zeiten) in RSS außerdem. Jedoch gibt es eine ruhige Menge Web site, die nicht RSS Zufuhren haben.
Wenn du noch wünschst, überprüfen jene Web site in deinem Liebling aggregator, du müssen deine eigene RSS Zufuhr für jene Web site herstellen. Dieses kann mit PHP mit einer benannten worden Methode automatisch getan werden Schirmausrangieren. Das Schirmausrangieren wird normalerweise auf die Stirn gerunzelt, da es meistens verwendet wird, um Inhalt von anderen Web site zu stehlen.
Ich glaube persönlich, daß in diesem Fall, eine RSS Zufuhr automatisch zu erzeugen, das Schirmausrangieren nicht eine schlechte Sache ist. Jetzt an zum Code!
Erhalten des Inhalts
Für diesen Artikel verwenden wir PHPit als Beispiel, obwohl PHPit bereits RSS Zufuhren hat (http://www.phpit.net/syndication/).
Wir wünschen eine RSS Zufuhr vom Inhalt erzeugen, der auf dem frontpage geverzeichnet wird (http://www.phpit.net). Der erste Schritt, bei der Schirmverschrottung erhält die komplette Seite. In PHP kann dieses, indem man verwendet, sehr leicht getan werden implodieren (Akte ("", „[das URL hier]“)); WENN dein Netzwirt es erlaubt. Wenn du nicht Akte benutzen kannst () mußt du eine andere Methode des Erhaltens der Seite verwenden, z.B. mit der WELLUNG Bibliothek (http://www.php.net/curl).
Nun da wir das zufriedene vorhandene haben, können wir es für den Inhalt mit einigen regelmäßigen Ausdrücken analysieren. Der Schlüssel zur Schirmverschrottung nach Mustern, die den Inhalt zusammenbringen, z.B. werden sucht alle zufriedenen Einzelteile aufgewickelt in den <div>s oder im noch etwas? Wenn du ein Muster erfolgreich entdecken kannst, dann kannst du preg_match_all benutzen () um alle zufriedenen Einzelteile zu erhalten.
Für PHPit ist das Muster, das zusammenbringen, der Inhalt <div class= " contentitem " > [Inhalt hier] <div>. Du kannst dieses überprüfen sich, indem Sie zur Hauptseite von PHPit gehen, und die Quelle ansehen.
Nun da wir ein Gleiches haben, können wir alle zufriedenen Einzelteile erhalten. Der folgende Schritt ist, die einzelnen Informationen, d.h. URL, Titel, Autor, Text zurückzuholen. Dieses kann getan werden, indem man mehr regelmäßigen Ausdruck und str_replace () auf jedem zufriedene Einzelteile verwendet.
Jetzt haben wir den folgenden Code; <? php//erhalten page$url = „http://www.phpit.net/“; $data = implodieren ("", Akte ($url)); // erhalten zufriedenes itemspreg_match_all (“/<div class= „contentitem „> ([^ `] *?)< /div>/“, $data, $matches);
Wie ich sagte, ist der folgende Schritt, die einzelnen Informationen zurückzuholen, aber lassen Sie uns einen Anfang auf unserer Zufuhr zuerst bilden, indem er die passende überschrift (Text/xml) einstellt und druckend die Führung Informationen, fangen die etc. // feedheader an („Inhalt-Art: Text/xml; charset=ISO-8859-1“); Echo „<? xml version= „1.0 “ encoding= „ISO-8859-1 “? > n ";? ><rss version= " 2.0 " xmlns: dc= " http://purl.org/dc/elements/1.1/ " xmlns: content= " http://purl.org/rss/1.0/modules/content/ " xmlns: admin= " http://webns.net/mvcb/ " xmlns: rdf= " http://www.w3.org/1999/02/22-rdf-syntax-ns # " > <channel> <title>PHPit neuestes Content</title> <description>The neuester Inhalt von PHPit (http://www.phpit.net), Schirm gerieben! </description> <link> http://www.phpit.net </link> <language>en-us</language><?
Jetzt ist es Zeit, sich durch die Einzelteile zu schlingen und druckt ihr RSS XML. Wir schlingen zuerst uns durch jedes Einzelteil und erhalten alle Informationen, die wir erhalten, indem wir regelmäßigere Ausdrücke und preg_match verwenden (). Nachher, daß das RSS für das Einzelteil printed.< ist? php//Schleife durch jedes zufriedene itemforeach ($matches [0] als $match) {// zuerst, erhalten Titel preg_match („/ „> ([^ `] *?)< /a>< /h3>/“, $match, $temp); $title = $temp [„1“]; $title = strip_tags ($title); $title = Ordnung ($title); // an zweiter Stelle, erhalten URL preg_match (“/<a href= „([^ `] *?) „>“, $match, $temp); $url = $temp [„1“]; $url = Ordnung ($url); // drittes, erhalten Text preg_match (“/<p> ([^ `] *?)<span class= „byline „>“, $match, $temp); $text = $temp [„1“]; $text = Ordnung ($text); // viertes und schließlich, erhalten Autor preg_match (“/<span class= „byline „>By ([^ `] *?)< /span>/“, $match, $temp); $author = $temp [„1“]; $author = Ordnung ($author); Echo „<item> n“ des // Echos RSS XML; Echo“ t t t<title> ". strip_tags ($title). „</title> n“; Echo“ t t t<link> http://www.phpit.net ". strip_tags ($url). „</link> n“; Echo“ t t t<description> ". strip_tags ($text). „</description> n“; Echo“ t t t<content: encoded><! [CDATA [ n "; Echo $text. „ n“; Echo“]] ></content: encoded> n "; Echo„ t t t<dc: creator>“. strip_tags ($author). „</dc: creator> n“; Echo“ t t</item> n ";}? >
Und schließlich, wird die RSS Akte weg geschlossen. </channel></rss>
Alles das ist. Wenn du allen Code, wie in den Demoindex, dann zusammenfügst, in dich ißt eine vollkommene RSS Zufuhr.
Zusammenfassung
In diesem Tutorial habe ich dich gezeigt, wie man eine RSS Zufuhr von einer Web site herstellt, die nicht eine RSS Zufuhr selbst noch hat. Obwohl der regelmäßige Ausdruck für jede Web site unterschiedlich ist, ist die Grundregel genau die selbe.
Eine Sache, die ich erwähnen sollte, ist, daß du nicht Kratzen sofort aussortieren solltest der Inhalt einer Web site. E-mail sie zuerst über eine RSS Zufuhr. Wer weiß, konnten sie ein herauf selbst einstellen, und die würde sogar besser sein.
Downloadbeispielindex bei http://www.phpit.net/viewsource.php?url=/demo/screenscrape%20rss/example.php
RSS ist eins die heißesten Technologien im Augenblick, und sogar erhalten grosse Netzverleger (wie die New York Zeiten) in RSS außerdem. Jedoch gibt es eine ruhige Menge Web site, die nicht RSS Zufuhren haben.
Wenn du noch wünschst, überprüfen jene Web site in deinem Liebling aggregator, du müssen deine eigene RSS Zufuhr für jene Web site herstellen. Dieses kann mit PHP mit einer benannten worden Methode automatisch getan werden Schirmausrangieren. Das Schirmausrangieren wird normalerweise auf die Stirn gerunzelt, da es meistens verwendet wird, um Inhalt von anderen Web site zu stehlen.
Ich glaube persönlich, daß in diesem Fall, eine RSS Zufuhr automatisch zu erzeugen, das Schirmausrangieren nicht eine schlechte Sache ist. Jetzt an zum Code!
Erhalten des Inhalts
Für diesen Artikel verwenden wir PHPit als Beispiel, obwohl PHPit bereits RSS Zufuhren hat (http://www.phpit.net/syndication/).
Wir wünschen eine RSS Zufuhr vom Inhalt erzeugen, der auf dem frontpage geverzeichnet wird (http://www.phpit.net). Der erste Schritt, bei der Schirmverschrottung erhält die komplette Seite. In PHP kann dieses, indem man verwendet, sehr leicht getan werden implodieren (Akte ("", „[das URL hier]“)); WENN dein Netzwirt es erlaubt. Wenn du nicht Akte benutzen kannst () mußt du eine andere Methode des Erhaltens der Seite verwenden, z.B. mit der WELLUNG Bibliothek (http://www.php.net/curl).
Nun da wir das zufriedene vorhandene haben, können wir es für den Inhalt mit einigen regelmäßigen Ausdrücken analysieren. Der Schlüssel zur Schirmverschrottung nach Mustern, die den Inhalt zusammenbringen, z.B. werden sucht alle zufriedenen Einzelteile aufgewickelt in den <div>s oder im noch etwas? Wenn du ein Muster erfolgreich entdecken kannst, dann kannst du preg_match_all benutzen () um alle zufriedenen Einzelteile zu erhalten.
Für PHPit ist das Muster, das zusammenbringen, der Inhalt <div class= " contentitem " > [Inhalt hier] <div>. Du kannst dieses überprüfen sich, indem Sie zur Hauptseite von PHPit gehen, und die Quelle ansehen.
Nun da wir ein Gleiches haben, können wir alle zufriedenen Einzelteile erhalten. Der folgende Schritt ist, die einzelnen Informationen, d.h. URL, Titel, Autor, Text zurückzuholen. Dieses kann getan werden, indem man mehr regelmäßigen Ausdruck und str_replace () auf jedem zufriedene Einzelteile verwendet.
Jetzt haben wir den folgenden Code; <? php//erhalten page$url = „http://www.phpit.net/“; $data = implodieren ("", Akte ($url)); // erhalten zufriedenes itemspreg_match_all (“/<div class= „contentitem „> ([^ `] *?)< /div>/“, $data, $matches);
Wie ich sagte, ist der folgende Schritt, die einzelnen Informationen zurückzuholen, aber lassen Sie uns einen Anfang auf unserer Zufuhr zuerst bilden, indem er die passende überschrift (Text/xml) einstellt und druckend die Führung Informationen, fangen die etc. // feedheader an („Inhalt-Art: Text/xml; charset=ISO-8859-1“); Echo „<? xml version= „1.0 “ encoding= „ISO-8859-1 “? > n ";? ><rss version= " 2.0 " xmlns: dc= " http://purl.org/dc/elements/1.1/ " xmlns: content= " http://purl.org/rss/1.0/modules/content/ " xmlns: admin= " http://webns.net/mvcb/ " xmlns: rdf= " http://www.w3.org/1999/02/22-rdf-syntax-ns # " > <channel> <title>PHPit neuestes Content</title> <description>The neuester Inhalt von PHPit (http://www.phpit.net), Schirm gerieben! </description> <link> http://www.phpit.net </link> <language>en-us</language><?
Jetzt ist es Zeit, sich durch die Einzelteile zu schlingen und druckt ihr RSS XML. Wir schlingen zuerst uns durch jedes Einzelteil und erhalten alle Informationen, die wir erhalten, indem wir regelmäßigere Ausdrücke und preg_match verwenden (). Nachher, daß das RSS für das Einzelteil printed.< ist? php//Schleife durch jedes zufriedene itemforeach ($matches [0] als $match) {// zuerst, erhalten Titel preg_match („/ „> ([^ `] *?)< /a>< /h3>/“, $match, $temp); $title = $temp [„1“]; $title = strip_tags ($title); $title = Ordnung ($title); // an zweiter Stelle, erhalten URL preg_match (“/<a href= „([^ `] *?) „>“, $match, $temp); $url = $temp [„1“]; $url = Ordnung ($url); // drittes, erhalten Text preg_match (“/<p> ([^ `] *?)<span class= „byline „>“, $match, $temp); $text = $temp [„1“]; $text = Ordnung ($text); // viertes und schließlich, erhalten Autor preg_match (“/<span class= „byline „>By ([^ `] *?)< /span>/“, $match, $temp); $author = $temp [„1“]; $author = Ordnung ($author); Echo „<item> n“ des // Echos RSS XML; Echo“ t t t<title> ". strip_tags ($title). „</title> n“; Echo“ t t t<link> http://www.phpit.net ". strip_tags ($url). „</link> n“; Echo“ t t t<description> ". strip_tags ($text). „</description> n“; Echo“ t t t<content: encoded><! [CDATA [ n "; Echo $text. „ n“; Echo“]] ></content: encoded> n "; Echo„ t t t<dc: creator>“. strip_tags ($author). „</dc: creator> n“; Echo“ t t</item> n ";}? >
Und schließlich, wird die RSS Akte weg geschlossen. </channel></rss>
Alles das ist. Wenn du allen Code, wie in den Demoindex, dann zusammenfügst, in dich ißt eine vollkommene RSS Zufuhr.
Zusammenfassung
In diesem Tutorial habe ich dich gezeigt, wie man eine RSS Zufuhr von einer Web site herstellt, die nicht eine RSS Zufuhr selbst noch hat. Obwohl der regelmäßige Ausdruck für jede Web site unterschiedlich ist, ist die Grundregel genau die selbe.
Eine Sache, die ich erwähnen sollte, ist, daß du nicht Kratzen sofort aussortieren solltest der Inhalt einer Web site. E-mail sie zuerst über eine RSS Zufuhr. Wer weiß, konnten sie ein herauf selbst einstellen, und die würde sogar besser sein.
Downloadbeispielindex bei http://www.phpit.net/viewsource.php?url=/demo/screenscrape%20rss/example.php
Article Source: http://www.articleset.com

You are welcome to publish or reprint this article free of charge, provided:
- you include the entire article, unchanged, including the "About The Author" box
- all hyperlinks remain active, including the bottom ArticleSet.com link (does not apply to print publications)
- you agree not to hold the authors nor ArticleSet.com liable for any loss profits, expenses, or any other damages resulting from the use or misuse of articles published on this website