¿Como obtener datos de una web sin API?

Confieso que no soy un as de la programación ni mucho menos, y es por ello que hoy escribiré sobre como solucione de manera poco elegante este tema.

Usando una técnica para tomar datos de otra web la cual no tiene API ni exportador de contenido denominado scraper (o rascado traducido) y consiste en volcar todo el contenido html y tomar lo necesario.

Desde ya que el alcance legal de esto es un de detalle a tener en cuenta y mucho de lo que vemos en internet tiene derechos de autor, sin embargo aquí tomaremos datos de un organismo de gobierno que están para ello, así que adelante.

En este caso estoy trabajando sobre un WordPress, por lo que hay que insertar el código html (y esperar que el WordPress no lo modifique de forma extraña).

La página en cuestion es la siguiente, del BCRA:

Si bien podemos scrapear el dato con cada acceso a la página, esto puede sobrecargar el sitio que estamos scrapeando depende la cantidad de visitantes que tengamos, y que el webmaster sospeche y nos bloquee el acceso, por ello lo que he hecho primero  es crear un archivo consulta.php en nuestro servidor, el cual se ejecutara una vez por día mediante un CRON (un cron es un proceso que se asigna desde el servidor para ser ejecutado con X frecuencia).

Una vez que este archivo se ejecuta, consultara la página en cuestión y luego insertara en nuestra base de datos lo que necesitemos (En este caso la base monetaria del país).

<?php 
   include_once 'simple_html_dom.php';
   $html = file_get_html('http://www.bcra.gob.ar/PublicacionesEstadis
   ticas/Principales_variables.asp');  
   $salida = $html->find('td');
   $valor = $salida[11]->plaintext;
   echo $valor; 
?>

En el código Fuente podemos ver como primero incluimos la librería simple_html_dom.php (la cual tiene que estar en nuestro servidor). La pueden descargar de http://simplehtmldom.sourceforge.net/.

 

Luego lo que realizan es asignar el html a la variable, y luego utilizar la función find (de la libreria que agregamos), que buscara las ‘TD’ (tablas en html), allí, el dato que queremos es la numero 11. Si realizan un echo van a ver cuáles son todas las TD.

Luego solo quedara recuperar de nuestra base de datos el archivo insertado y mostrarlo en nuestra página. El resultado es:

 

La forma de mostrarlo en mi caso es utilizar un IFRAME, que abrira un .html que es el que recupera el dato de la base. La forma es:

 
   <p style="text-align: center;"><iframe src="http://google.com/"
   width="220" height="80"></iframe>