Simple html dom ayuda no me funciona

  • Autor Autor igorayeb
  • Fecha de inicio Fecha de inicio
I

igorayeb

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola Amig@s, soy autodidacta en programación y necesito su ayuda.
Estoy intentando obtener datos de una web pero me está costando mucho porque no logro obtener los datos precisos que necesito.

el archivo fuente es este:
<div class="span12">
<a title="Otros: Núcleo Frío en Altura, condiciones meteorológicas extremas, etc." href="/alerta/monitoreo-alerta-amarilla-para-la-comuna-de-penaflor-por-incendio-en-vertedero">
<img class="tipo-alerta" alt="Otros: Núcleo Frío en Altura, condiciones meteorológicas extremas, etc." src="/wp-content/themes/onemi-bootstrap-master/library/img/alerta/amarillo/otros--nucleo-frio-en-altura--condiciones-meteorologicas-extremas--etc-.png">
<p class="date">01/03/2018 | 20:00 |
Metropolitana</p>
<p class="msg">Monitoreo Alerta Amarilla para la comuna de Peñaflor por incendio en vertedero</p>
</a>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<a title="Otros: Núcleo Frío en Altura, condiciones meteorológicas extremas, etc." href="/alerta/se-actualiza-alerta-temprana-preventiva-para-la-provincia-del-tamarugal-por-evento-meteorologico">
<img class="tipo-alerta" alt="Otros: Núcleo Frío en Altura, condiciones meteorológicas extremas, etc." src="/wp-content/themes/onemi-bootstrap-master/library/img/alerta/verde/otros--nucleo-frio-en-altura--condiciones-meteorologicas-extremas--etc-.png">
<p class="date">01/03/2018 | 11:32 |
Tarapacá</p>
<p class="msg">Se actualiza Alerta Temprana Preventiva para la provincia del Tamarugal por evento meteorológico</p>
</a>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<a title="Otros: Núcleo Frío en Altura, condiciones meteorológicas extremas, etc." href="/alerta/monitoreo-alerta-roja-para-la-provincia-de-palena-por-evento-meteorologico1">
<img class="tipo-alerta" alt="Otros: Núcleo Frío en Altura, condiciones meteorológicas extremas, etc." src="/wp-content/themes/onemi-bootstrap-master/library/img/alerta/rojo/otros--nucleo-frio-en-altura--condiciones-meteorologicas-extremas--etc-.png">
<p class="date">28/02/2018 | 21:59 |
Los Lagos</p>
<p class="msg">Monitoreo Alerta Roja para la provincia de Palena por evento meteorológico</p>
</a>
</div>
</div>

Etc, se repite varias veces

Mi php es
<?php
require 'simple_html_dom.php';

$html = file_get_html('xxxxx');

foreach($html->find('div[class=span12]]') as $element)
{
echo $element->plaintext.'<br />'.'<hr />';

}
?>

Esto me da como resultado:
01/03/2018 | 20:00 | Metropolitana Monitoreo Alerta Amarilla para la comuna de Peñaflor por incendio en vertedero

01/03/2018 | 11:32 | Tarapacá Se actualiza Alerta Temprana Preventiva para la provincia del Tamarugal por evento meteorológico

28/02/2018 | 21:59 | Los Lagos Monitoreo Alerta Roja para la provincia de Palena por evento meteorológico

26/02/2018 | 21:18 | Coquimbo Resumen nacional de incendios forestales

19/02/2018 | 17:35 | Biobío Monitoreo Alerta Amarilla para las comunas de Pinto y Coihueco por actividad del complejo volcánico Nevados de Chillán


Mi pregunta es como filtro el resultado primero y segundo como obtengo un arreglo así:
- Fecha: 01/03/2018 | 20:00 |
- Región: Metropolitana
- Alerta: Monitoreo Alerta Amarilla para la comuna de Peñaflor por incendio en vertedero
- Link: href

Y el filtro por ejemplo que sólo me muestre la información que contenga por ejemplo la palabra PALENA (mayúscula o minúscula)

Muchas gracias
 
PHP:
<?php
require 'simple_html_dom.php';

$html = file_get_html('xxxxx');

foreach($html->find('div.span12') as $element)
{
// aplicas trim a cada elemento para quitar espacios innecesarios.
$fecha = trim($element->find('.date')->plaintext);
$alerta = trim($element->find('.msg')->plaintext);

// obtenes la region con un explode "|" de fecha;
}
?>
 
Gracias, cuando corro esta modificación no me aparece nada. Queda en blanco.
 
[MENTION=193181]igorayeb[/MENTION] Esto me funciono!! :encouragement:

PHP:
<?php

require 'simple_html_dom.php';

$html = file_get_html('xxxxx');
$spans = $html->find('.span12');

foreach($spans as $span){
	
	$datos = explode('|', $span->find('.date', 0)->plaintext);
	
	echo '- Región: '.$datos[2].'<br>';
	echo '- Fecha: '.$datos[0].' | '.$datos[1].'<br>';
	echo '- Alerta: '.$span->find('.msg', 0)->plaintext.'<br>';
	echo '- Link: '.$span->find('a', 0)->href.'<br>';
	
}

?>
 
Última edición:
No hay caso, quizás habrá algún problema desde la pagina fuente?
Incluí la web que estoy buscando y cada vez que agrego cosas distintas al código más simple, no arroja ningún resultado

<?php
require 'simple_html_dom.php';

$html = file_get_html(ONEMI: Ministerio del Interior y Seguridad Pública -) ;
$spans = $html->find('div.span12');

foreach($spans as $span){

$datos = explode('|', $span->find('.date', 0)->plaintext);

echo '- Región: '.$datos[2].'<br>';
echo '- Fecha: '.$datos[0].' | '.$datos[1].'<br>';
echo '- Alerta: '.$span->find('.msg', 0)->plaintext.'<br>';
echo '- Link: '.$span->find('a', 0)->href.'<br>';

}

?>

- - - Actualizado - - -

grandes amigos, me había comido un ' por eso no resultaba.
 
Última edición:
[MENTION=193181]igorayeb[/MENTION] entonce ya funciono ??
 
Sip, muchas gracias

- - - Actualizado - - -

Yelsin nuevamente tengo una duda.

De esta pagina obtengo esta líneas:
<table><tbody>
<tr class="impar"><th>Fecha Local</th><th>Lugar</th><th>Magnitud</th></tr>
<tr class="par"><td><a href="/events/sensibles/2018/03/04-2236-00L.S201803.html" target="centro">2018/03/04 19:36:27</a></td><td>12 km al NO de Colina</td><td>3.3 Ml</td></tr>
<tr class="impar"><td><a href="/events/sensibles/2018/03/04-2158-50L.S201803.html" target="centro">2018/03/04 18:59:03</a></td><td>22 km al NO de Ollagüe</td><td>3.2 Ml</td></tr>
<tr class="par"><td><a href="/events/sensibles/2018/03/04-1900-00L.S201803.html" target="centro">2018/03/04 16:00:39</a></td><td>25 km al NO de Quillagua</td><td>3.4 Ml</td></tr>
<tr class="impar"><td><a href="/events/sensibles/2018/03/04-1857-20L.S201803.html" target="centro">2018/03/04 15:57:31</a></td><td>68 km al NE de San Pedro de Atacama</td><td>3.1 Ml</td></tr>
<tr class="par"><td><a href="/events/sensibles/2018/03/04-1742-00L.S201803.html" target="centro">2018/03/04 14:42:09</a></td><td>68 km al SE de Socaire</td><td>3.2 Ml</td></tr>
<tr class="impar"><td><a href="/events/sensibles/2018/03/04-1642-40L.S201803.html" target="centro">2018/03/04 13:42:52</a></td><td>44 km al N de Mina Collahuasi</td><td>3.1 Ml</td></tr>
<tr class="par s_sensible"><td><a href="/events/sensibles/2018/03/04-1616-30L.S201803.html" target="centro">2018/03/04 13:16:32</a></td><td>42 km al N de Mina Collahuasi</td><td>5.1 Mw</td></tr>
<tr class="impar s_sensible"><td><a href="/events/sensibles/2018/03/04-1536-23L.S201803.html" target="centro">2018/03/04 12:36:23</a></td><td>9 km al SE de Punitaqui</td><td>4.5 Mw</td></tr>
<tr class="par s_sensible"><td><a href="/events/sensibles/2018/03/04-1406-55L.S201803.html" target="centro">2018/03/04 11:06:55</a></td><td>26 km al SO de Punitaqui</td><td>4.3 Ml</td></tr>
<tr class="impar"><td><a href="/events/sensibles/2018/03/04-1145-05L.S201803.html" target="centro">2018/03/04 08:45:02</a></td><td>87 km al O de Cobquecura</td><td>3.1 Ml</td></tr>
<tr class="par"><td><a href="/events/sensibles/2018/03/04-0710-40L.S201803.html" target="centro">2018/03/04 04:10:42</a></td><td>72 km al NE de Calama</td><td>3.2 Ml</td></tr>
<tr class="impar"><td><a href="/events/sensibles/2018/03/04-0412-40L.S201803.html" target="centro">2018/03/04 01:12:42</a></td><td>39 km al SE de Camiña</td><td>3.4 Ml</td></tr>
<tr class="par"><td><a href="/events/sensibles/2018/03/04-0242-20L.S201803.html" target="centro">2018/03/03 23:42:22</a></td><td>74 km al SE de Socaire</td><td>4.1 Ml</td></tr>
<tr class="impar"><td><a href="/events/sensibles/2018/03/04-0134-44L.S201803.html" target="centro">2018/03/03 22:34:49</a></td><td>101 km al NE de Mina Los Pelambres</td><td>3.1 Ml</td></tr>
<tr class="par"><td><a href="/events/sensibles/2018/03/03-2212-35L.S201803.html" target="centro">2018/03/03 19:12:48</a></td><td>44 km al SE de Camiña</td><td>3.2 Ml</td></tr>
</tbody></table>

Y uso:
<?php
require 'simple_html_dom.php';
$html = file_get_html('http://www.sismologia.cl/');

foreach($html->find('table[class=impar] tr') as $tr) {
//get all <td> where class is NOT "debug"
foreach($tr->find('td') as $t) {
//get the inner HTML
echo $t->inertext;
}
}
?>

Pero no me da ningún resultado.
Sorry por las molestias pero me cuesta un poco este tema.
 
Atrás
Arriba