Defender raspar tu manera en RSS

| by Dennis Pallett | December 11, 2004
Introducción

RSS es uno las tecnologías más calientes en el momento, e incluso los editores grandes de la tela (tales como los tiempos de Nueva York) están consiguiendo en RSS también. Sin embargo, hay muchos inmóviles de los Web site que no tienen alimentaciones de RSS.

Si todavía deseas poder comprobar esos Web site en tu aggregator del favorito, necesitas crear tu propia alimentación de RSS para esos Web site. Esto se puede hacer automáticamente con PHP, usando un método llamado el desechar de la pantalla. El desechar de la pantalla se frunce el ceño generalmente sobre, pues se utiliza sobre todo para robar el contenido de otros Web site.

Creo personalmente que en este caso, generar automáticamente una alimentación de RSS, el desechar de la pantalla no es una mala cosa. ¡Ahora, encendido al código!

Conseguir el contenido

Para este artículo, utilizaremos PHPit como ejemplo, a pesar de que PHPit tiene ya alimentaciones de RSS (http://www.phpit.net/syndication/).

Desearemos generar una alimentación de RSS del contenido enumerado en el frontpage (http://www.phpit.net). El primer paso en raspar de la pantalla está consiguiendo la página completa. En PHP esto se puede hacer muy fácilmente, usando implode (archivo ("", “[el URL aquí]”)); SI tu anfitrión de la tela lo permite. Si no puedes utilizar el archivo () tendrás que utilizar un diverso método de conseguir la página, e.g. con la biblioteca del ENROLLAMIENTO (http://www.php.net/curl).

Ahora que tenemos el disponible contento, podemos analizarlo para el contenido usando algunas expresiones regulares. ¿La llave a raspar de la pantalla están buscando los patrones que emparejan el contenido, e.g. todos los artículos contentos se envuelven en los <div> o algo más? Si puedes descubrir con éxito un patrón, entonces puedes utilizar el preg_match_all () para conseguir todos los artículos contentos.

Para PHPit, el patrón que empareja el contenido es class= " contentitem " del <div > [contenido aquí] <div>. Puedes verificar este tú mismo yendo a la página principal de PHPit, y viendo la fuente.

Ahora que tenemos un fósforo podemos conseguir todos los artículos contentos. El paso siguiente es recuperar la información individual, es decir URL, título, autor, texto. Esto puede ser hecha usando más expresión y str_replace regulares () en el cada los artículos contentos.

Ahora tenemos el código siguiente; ¿<? php//consiguen page$url = “http://www.phpit.net/”; $data = implode ("", archivo ($url)); // consigue el itemspreg_match_all contento (class= “contentitem de”/<div “> ([el `del ^] *?)< /div>/”, $data, $matches);

Como dije, el paso siguiente es recuperar la información individual, pero primero dejarnos hacen un principio en nuestra alimentación, fijando el jefe apropiado (texto/xml) e imprimiendo la información del canal, los etc. // comienzan el feedheader (“Contenido-Tipo: texto/xml; charset=ISO-8859-1”); ¿eco “<? ¿version= del xml “1.0 ” encoding= “ISO-8859-1 ”? ¿> n ";? version= de los ><rss " 2.0 " xmlns: xmlns de " http://purl.org/dc/elements/1.1/ " del dc=: xmlns de " http://purl.org/rss/1.0/modules/content/ " del content=: xmlns de " http://webns.net/mvcb/ " del admin=: ¡rdf= " http://www.w3.org/1999/02/22-rdf-syntax-ns # " > el contenido más último Content</title> del <channel> del <description>The más último del <title>PHPit de PHPit (pantalla de http://www.phpit.net), raspada! ¿<link> http://www.phpit.net </link> <language>en-us</language>< de </description>?

Ahora es hora de colocar a través de los artículos, e imprime su RSS XML. Primero colocamos a través de cada artículo, y conseguimos toda la información que conseguimos, usando expresiones y un preg_match más regulares (). ¿Después que el RSS para el artículo es printed.<? el lazo de php//a través de cada itemforeach contento ($matches [0] como $match) {// primero, consigue el preg_match del título (“/ “> ([el `del ^] *?)< /a>< /h3>/”, $match, $temp); $title = $temp [“1”]; $title = strip_tags ($title); $title = ajuste ($title); // en segundo lugar, consigue el preg_match del URL (” href= de/<a “([el `del ^] *?) “>”, $match, $temp); $url = $temp [“1”]; $url = ajuste ($url); // tercer, consigue el preg_match del texto (”/<p> ([el `del ^] *?)class= “byline “>”, $match, $temp <span); $text = $temp [“1”]; $text = ajuste ($text); // cuarto, y finalmente, consigue el preg_match del autor (class= “byline “>By de”/<span ([el `del ^] *?)< /span>/”, $match, $temp); $author = $temp [“1”]; $author = ajuste ($author); Eco “<item> n” del eco RSS XML de //; ” t t t<title> " del eco. strip_tags ($title). “</title> n”; ” t t t<link> http://www.phpit.net " del eco. strip_tags ($url). “</link> n”; ” t t t<description> " del eco. strip_tags ($text). “</description> n”; ” t t del eco t<content: ¡encoded><! [CDATA [ n "; eco $text. “ n”; eco”]] ></content: encoded> n "; “ t t t<dc del eco: creator>”. strip_tags ($author). “</dc: creator> n”; ” t t</item> n " del eco;}¿? >

Y finalmente, el archivo de RSS está cerrado apagado. </channel></rss>

Ése es todo. Si juntas todo el código, como en la escritura de la versión parcial de programa, después ti comerá una alimentación perfecta de RSS.

Conclusión

En esta clase particular te tengo demostrado cómo crear una alimentación de RSS de un Web site que no tenga una alimentación ellos mismos de RSS todavía. Aunque la expresión regular es diferente para cada Web site, el principio es exactamente igual.

Una cosa que debo mencionar es que no debes defender inmediatamente el rascado el contenido de un Web site. E-mail ellos primero sobre una alimentación de RSS. Quién sabe, él puede ser que fije uno encima de sí mismos, y eso sería incluso mejor.

Escritura de la muestra de la transferencia directa en http://www.phpit.net/viewsource.php?url=/demo/screenscrape%20rss/example.php

Article Source: http://www.articleset.com



About the Author

Dennis Pallett is a young tech writer, with much experience in ASP, PHP and other web technologies. He enjoys writing, and has written several articles and tutorials. To find more of his work, look at his websites at http://www.phpit.net, http://www.aspit.net and http://www.ezfaqs.com. » Read more articles by Dennis Pallett
You are welcome to publish or reprint this article free of charge, provided: