Capturar datos de otra web en PHP

Nov 30, 2011 No Comments by

A veces es necesario extraer datos “públicos” desde alguna fuente en internet, en PHP, lo podemos hacer con un GET y una que otra expresión regular.

Como en todo, hay varias formas, pero creo que la más sencilla es utilizar la función file_get_contents para realizar un simple GET y obtener el contenido del sitio web.

La función file_get_contents soporta varios wrappers, desde un archivo local (ejemplo /tmp/my-file) a una url http, pasando por ftp, scp, etc. (más información sobre wrappers).

Vamos a extraer la UF desde el sitio www.terra.cl/valores/

Al analizar el código fuente del sitio, podemos ver que la UF se encuentra en el siguiente trozo de código

<tr bgcolor="EFEBE7">
            <td align="right" class="texto2">UF : </td>

            <td class="texto2"><b>22.213,43</b></td>
</tr>

Solo nos queda realizar una expresión regular que sea capaz de representar al patrón del trozo de código y la sección que deseamos capturar.

<?php
// Example by deerme.org
$data = file_get_contents("http://www.terra.cl/valores/");

if ( preg_match('|<td align="right" class="texto2">UF : </td>\s+<td class="texto2"><b>(.*?)</b></td>|is' , $data , $cap ) )
{
	echo "UF ".$cap[1];
}

Si ejecutamos nuestro script (vía web o por consola) obtenemos la UF de hoy a través de Terra xD.

PHP, Web Scraping

About the author

The author didnt add any Information to his profile yet
No Responses to “Capturar datos de otra web en PHP”

Leave a Reply


six - = 3