Importar cotización del Dolar Banco Nacion.

Importar la cotizacion del Dolar del Banco Nacion, no es nada sencillo si no disponemos de un web service pago. En este articulo explicaremos como leer la cotización de la moneda (Euro y Dolar) desde la página del Banco Nación, sin consumir ningún webservice. El lenguaje utilizado es PHP, pero es fácilmente adaptable a cualquier otro.

Primeramente, nos vemos obligados a explicar las ventajas de un WebService. Aquí comprobaremos, lo dificultoso que es interactuar con otro sistema sin un lenguaje en común.

Por ejemplo, si la web del Banco Nación publicaría un WebService donde podria informar la cotización de las monedas, a través del llamado a este, nos ahorraríamos todo el desarrollo que vamos a explicar aquí.

Antes de meternos de lleno al ejemplo, debemos entender que tipos de web services hay. Básicamente tenemos dos que son los mas populares: Rest SOAP Los métodos utilizados por REST son: GET, POST, PUT y DELETE. Usualmente, el método más implementado por SOAP es POST incluso para "operaciones de GET", dado que es necesario un SOAP request, que no puede pasarse por “Query String”.

Desarrollando nuestra importación de la moneda

La web del Banco Nación de la Republica Argentina, dispone en su Home la siguiente tabla con las cotizaciones:

Importar cotización del Dolar Banco Nacion.

Abriendo el código fuente

Para ver el código fuente de la web, debemos utilizar Google Chrome. Clic derecho sobre la web, Ver código Fuente. Luego busquemos la cadena: Dolar U.S.A Vamos a ver algo como lo siguiente:

Codigo Fuente Banco Nacion

Para qué hacemos esto? Esto nos sirve para entender cómo esta compuesta la web, desde el lado del cliente. La web puede cambiar de contenido, variar la ubicación de la tabla. Pero lo que nunca va a cambiar es la palabra Dolar U.S.A . Con esto, logramos pasar el primer obstáculo: Tenemos que leer la web y buscar la posicion donde esta la cadena Dolar U.S.A. El segundo obstáculo es contar los espacios que lo separan de la cotización en si. Finalmente, conseguimos leer la cotización.

Función PHP para leer texto de una web: file_get_contents

A continuación veremos la función que utilizaremos en nuestro sistema, para leer el contenido de la web que le indiquemos y luego buscar la posición de la cadena Dolar U.S.A. Cabe destacar que podemos utilizar cualquier web que deseemos.
public function dolar()
{

$opts = array('http' => array('header' => "User-Agent:MyAgent/1.0\r\n"));
$context = stream_context_create($opts);
$header = file_get_contents('http://www.bna.com.ar', FALSE, $context);
$mystring = $header;
$findme = 'Dolar U.S.A';
$pos = strpos($mystring, $findme);
$cotizacionDolar = substr ($mystring ,$pos+96,5);
return $cotizacionDolar;
} // fin function

Vamos a explicar un poco como funciona.
file_get_contents('http://www.bna.com.ar', FALSE, $context): Transmite el texto del codigo fuente a un string.
Parámetros:
URL de la Web

La función strpos() devuelve la posición de la primera coincidencia de la palabra o carácter buscado en una cadena de texto (string). Es sensible a mayúsculas y minúsculas. La función substr extrae de la cadena, una subcadena con la cotización.