Foros del Web » Programando para Internet » PHP »

Extraer contenido de un post desde RSS

Estas en el tema de Extraer contenido de un post desde RSS en el foro de PHP en Foros del Web. Buenas, Estoy tratando de extraer el contenido de un post desde un rss. He encontrado este código que los extrae, pero me gustaría que solo ...
  #1 (permalink)  
Antiguo 13/01/2012, 21:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Extraer contenido de un post desde RSS

Buenas,
Estoy tratando de extraer el contenido de un post desde un rss. He encontrado este código que los extrae, pero me gustaría que solo me extrajera un post (el último) y los extrae todos.

Código PHP:
/* the namespace of rss "content" */
$content_ns "http://purl.org/rss/1.0/modules/content/";

/* load the file */
$rss file_get_contents("http://chacha102.com/feed/");
/* create SimpleXML object */
$xml = new SimpleXMLElement($rss);
$root=$xml->channel/* our root element */

foreach($root->item as $item) { /* loop over every item in the channel */
    
print "Description: <br>".$item->description."<br><br>";
    print 
"Full content: <div>";
    foreach(
$item->children($content_ns) as $content_node) {
        
/* loop over all children in the "content" namespace */
        
print $content_node."\n";
    }
    print 
"</div>";

¿Como debería de hacerlo?
Un saludo.

PD. La fuente del código es stackoverflow, no parece la fuente original pero no la he encontrado.
  #2 (permalink)  
Antiguo 13/01/2012, 22:16
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Extraer contenido de un post desde RSS

Te sirve el método xpath para decirle que sólo quieres el último item.

Un ejemplo básico:

Código PHP:
Ver original
  1. <?php
  2. $sxe = new SimpleXMLElement('http://chacha102.com/feed/', null, true);
  3. $item = $sxe->xpath('//item[last()]');
  4. $item = $item[0];
  5. $ns = $item->getNameSpaces(true);
  6. $cn = $item->children($ns['content']);
  7. echo $item->description; //Descripción corta
  8. echo '<hr />';
  9. echo $cn->encoded; //Descripción larga

Aporte sobre como leer RSS con varias clases
Referencia XPath

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 13/01/2012, 22:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Extraer contenido de un post desde RSS

Gracias andresdzphp,

Me muestra uno así, pero no es el último. Concretamente muestra el post 29 contando regresivamente, no entiendo.

¿Que puede estar sucediendo? con $item[0]; debería mostrar el último verdad?

Un saludo.
  #4 (permalink)  
Antiguo 13/01/2012, 22:43
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Extraer contenido de un post desde RSS

Ese es el último post de ese archivo XML de la URL aquí le estoy indicando que es el último item del archivo:

Código PHP:
Ver original
  1. $sxe->xpath('//item[last()]');

Quieres el primero? o que es lo que quieres realmente?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 13/01/2012 a las 22:50
  #5 (permalink)  
Antiguo 13/01/2012, 23:01
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Extraer contenido de un post desde RSS

No se que sucede, acabo de probar otro feed y muestra el post 29 también

Código PHP:
$sxe = new SimpleXMLElement('http://feeds.feedburner.com/Runscorenet'nulltrue); 
$item $sxe->xpath('//item[last()]');
$item $item[0];
$ns $item->getNameSpaces(true);
$cn $item->children($ns['content']);
echo 
$item->description//Descripción corta
echo '<hr />';
echo 
$cn->encoded//Descripción larga 
Que sentido puede tener esto
  #6 (permalink)  
Antiguo 13/01/2012, 23:02
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Extraer contenido de un post desde RSS

A mi se me hace que los últimos post están en la parte de arriba... Creo... o el RSS está en desorden

Prueba así:

Código PHP:
Ver original
  1. <?php
  2. $sxe = new SimpleXMLElement('http://chacha102.com/feed/', null, true);
  3. $item = $sxe->xpath('//item[position()=1]');
  4. $item = $item[0];
  5. $ns = $item->getNameSpaces(true);
  6. $cn = $item->children($ns['content']);
  7. echo $item->description; //Descripción corta
  8. echo '<hr />';
  9. echo $cn->encoded; //Descripción larga

sino indica cual post debería mostrar, para entenderte mejor.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 13/01/2012, 23:06
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Extraer contenido de un post desde RSS

El último que se ha publicado, por ejemplo en el último feed que acabo de pegar en el post anterior que es de la página esta de runscore, el post Informe Robinson.
  #8 (permalink)  
Antiguo 13/01/2012, 23:08
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Extraer contenido de un post desde RSS

Ya está :), en tu último post estaba la solución. :)
Muchísimas gracias andresdzphp, da gusto, la rapidez ha sido absoluta.
;)
Un abrazo.
  #9 (permalink)  
Antiguo 13/01/2012, 23:08
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Extraer contenido de un post desde RSS

Si era que los últimos estaban en la parte superior. de nada.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 13/01/2012, 23:35
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Extraer contenido de un post desde RSS

Perdona Andrés, si no es mucho abusar.
Mira estoy tratando de extrae el id de los vídeo de YouTube, con el código que me has facilitado.

Código PHP:
$sxe = new SimpleXMLElement('http://feeds.feedburner.com/Runscorenet'nulltrue); 
$item $sxe->xpath('//item[position()=1]');
$item $item[0];
$ns $item->getNameSpaces(true);
$cn $item->children($ns['content']);
//echo $item->description; //Descripción corta
//echo '<hr />';
 

$texto $cn->encoded//Descripción larga 
$res preg_match_all("/youtube.com\/.\/([a-zA-Z0-9]*)\?/i"$texto$result);
                       
print_r($result); 
... pero el resultado me sale

Código PHP:
 Array ( [0] => Array ( [0] => youtube.com/v/GM9HjGIHl7g? [1] => youtube.com/v/GM9HjGIHl7g? ) [1] => Array ( [0] => GM9HjGIHl7g [1] => GM9HjGIHl7g ) ) 
¿Es por la expresión regular o por el método xpath?
  #11 (permalink)  
Antiguo 13/01/2012, 23:39
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Extraer contenido de un post desde RSS

Perdona ya está
Código PHP:
$result[1][0
Muchas gracias de todos modos.
Un saludo.

Etiquetas: contenido, post, rss
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:03.