Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Separar contenido curl

Estas en el tema de Separar contenido curl en el foro de PHP en Foros del Web. Buenos dias, quiero selecionar solo los titulares de un blog para publicarlos en mi web (tengo permiso) y he obtado por hacerlo en curl, el ...
  #1 (permalink)  
Antiguo 29/10/2013, 02:39
 
Fecha de Ingreso: septiembre-2011
Mensajes: 49
Antigüedad: 12 años, 6 meses
Puntos: 3
Separar contenido curl

Buenos dias,

quiero selecionar solo los titulares de un blog para publicarlos en mi web (tengo permiso) y he obtado por hacerlo en curl, el problema es que me trae/enseña todos los titulares pero no puedo asignarles ninguna variable para guardarlos y poder publicarlos por separado.

El problema es que cada noticia esta cortada por el mismo patron y a la hora de indicarle a curl que me seleccione lo que esta dentro del div class="X" o del h2 me trae todos los div o h2 que aparecen en el blog y me los publica todos juntos.

¿Como podria hacer para que no me salga Titular1, Titular2, Titular3,etc.. y me de los resultados separados por variables?
  #2 (permalink)  
Antiguo 29/10/2013, 03:50
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 9 meses
Puntos: 10
Respuesta: Separar contenido curl

Hola,

Con preg_match_all puedes poner el patrón que sigue tu estructura y queda almacenado en una variable en forma de array que puedes recorrer tu posteriormente.
  #3 (permalink)  
Antiguo 29/10/2013, 04:36
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Separar contenido curl

Cómo haces para obtener solo esos contenidos?

Digo, necesitamos ver tu código para tratar de ver lo que está fallando y poder sugerir una solución.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 29/10/2013, 09:12
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Separar contenido curl

Para esos casos existen las clases DOM.
__________________
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
  #5 (permalink)  
Antiguo 29/10/2013, 12:36
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 9 meses
Puntos: 10
Respuesta: Separar contenido curl

Hola,

Yo me fío más de realizar expresiones regulares, ya que los DOM si no esta bien el código hay veces que no lo construye bien, por no ser HTML válido.
  #6 (permalink)  
Antiguo 29/10/2013, 13:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Separar contenido curl

En esos casos que comentas existen otras alternativas para mejorar el código html: tidy, consultas xpath, ignorar los errores etc. Las expresiones regulares no son la mejor opción para parsear html, puedes perder muchisimo tiempo afinando una expresión regular que puede fallar con cualquier cambio en el HTML. No se hicieron para esto y no tendrás las ventajas de DOM.

¿para qué reinventar la rueda?

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
  #7 (permalink)  
Antiguo 31/10/2013, 10:10
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 9 meses
Puntos: 10
Respuesta: Separar contenido curl

Depende de la destreza que tengas con las expresiones regulares ahorras tiempo.
  #8 (permalink)  
Antiguo 31/10/2013, 10:33
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Separar contenido curl

Te invito a buscar en google porque No debe parsearse html con regex.
__________________
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
  #9 (permalink)  
Antiguo 31/10/2013, 12:09
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Separar contenido curl

Estoy de acuerdo y secundo que deberías usar DOM para ello, y con tidy lo puedes arreglar si es que no está construido correctamente. Lo digo porque las expresiones regulares pueden ocupar mucho recurso (que no estoy diciendo con ello que no se pueda lograr). Si existe una librería dedicada a ello deberías usar la librería en vez de usar expresiones regulares.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 02/11/2013, 04:48
 
Fecha de Ingreso: septiembre-2011
Mensajes: 49
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Separar contenido curl

Buenos días señores, siento la tardanza en contestar, pero es que aquí en la isla hace 2 dias paso un pequeño temporal que me ha dejado sin internet estos días y parece ser que timofonica no me lo ha solucionado todavía y se me cae el internet cada 5 min.

Para extraer las noticias uso DOM, dejar claro que mi conocimiento con curl es bastante básico.

Como veis la extracción es de todas las noticias pero yo quiero poder separar esos títulos para poder utilizarlos por separado.

Código:
<?php

		require 'simple_html_dom.php';
		
		// Create DOM from URL
		$html = file_get_html('http://www.icantriathlon.es/ican/cutenews/noticias_es.php?go=news');

		// Find all article blocks
		foreach($html->find('strong') as $noticia) 
			echo $noticia;


?>
  #11 (permalink)  
Antiguo 02/11/2013, 07:18
Avatar de Lautaro_eb  
Fecha de Ingreso: mayo-2010
Ubicación: Bariloche, Argentina
Mensajes: 284
Antigüedad: 13 años, 10 meses
Puntos: 24
Respuesta: Separar contenido curl

Dom es la mejor opción para lo que quieres hacer, y para utilizar los títulos puedes guárdalos en un array si lo utilizaras en el momento o guardarlo en la base de datos que creo que es lo que quieres es hacer.
Código PHP:
Ver original
  1. <?php
  2.  
  3.         require 'simple_html_dom.php';
  4.        
  5.         // Create DOM from URL
  6.         $html = file_get_html('http://www.icantriathlon.es/ican/cutenews/noticias_es.php?go=news');
  7.  
  8.         $titulo = Array();
  9.         foreach($html->find('strong') as $noticia) {
  10.             $titulo[] = $noticia;
  11.                 }
  12.                 echo $titulo[0]. " - ".$titulo[1];
  13.  
  14.  
  15. ?>
__________________
Mi emprendimiento: Software BRC
Youtube: Tutoriales de programación y electrónica.
  #12 (permalink)  
Antiguo 02/11/2013, 08:16
 
Fecha de Ingreso: septiembre-2011
Mensajes: 49
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Separar contenido curl

Cita:
Iniciado por Lautaro_eb Ver Mensaje
Dom es la mejor opción para lo que quieres hacer, y para utilizar los títulos puedes guárdalos en un array si lo utilizaras en el momento o guardarlo en la base de datos que creo que es lo que quieres es hacer.
Código PHP:
Ver original
  1. <?php
  2.  
  3.         require 'simple_html_dom.php';
  4.        
  5.         // Create DOM from URL
  6.         $html = file_get_html('http://www.icantriathlon.es/ican/cutenews/noticias_es.php?go=news');
  7.  
  8.         $titulo = Array();
  9.         foreach($html->find('strong') as $noticia) {
  10.             $titulo[] = $noticia;
  11.                 }
  12.                 echo $titulo[0]. " - ".$titulo[1];
  13.  
  14.  
  15. ?>
Gracias Lautaro, voy a experimentar un poco!

¿Recomiendas algún sitio de información sobre curl?

ya que es algo que me interesa mucho!!

PD: Te doy reputación
  #13 (permalink)  
Antiguo 02/11/2013, 08:48
 
Fecha de Ingreso: septiembre-2011
Mensajes: 49
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Separar contenido curl

Es lo que queria!

Gracias

Etiquetas: contenido, curl, variable
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 16:20.