jueves, 21 de febrero de 2019

Obtener la temperatura de una ciudad

Hoy vamos a ver una forma rápida para obtener la temperatura que hay en una ciudad mediante un script. Para ello vamos a basarnos en la web https://www.eltiempo.es, pero este método es extensible a cualquier otra web.
Para ello, accederemos mediante un navegador web e iremos a la página del tiempo en la ciudad deseada, por ejemplo Murcia: https://www.eltiempo.es/murcia.html
El siguiente paso será hacer esto mismo que hemos realizado con un navegador, pero esta vez mediante un script para quedarnos con el valor que nos interesa: la temperatura.

Para ello, vamos a acceder a la web mediante el comando curl y la opción -s, de silent, para que no muestre el progreso de la descarga:
$ curl -s https://www.eltiempo.es/murcia.html
Esto saca por pantalla la web, en html. Ahora vamos a buscar el punto en el que se registra la temperatura. En este caso la línea exacta con parte de su contexto es la siguiente:
        <section class="-block-3 c-tib">
            <p>
                <span data-temp="10" class="c-tib-text"><span data-temp="10" data-temp-include-units="">10&deg;</span></span>
Por tanto, vamos a buscar la línea con texto:
<section class="-block-3 c-tib"\>
que sabemos que es única en la página web, mostraremos 2 líneas por debajo de esta y nos quedaremos con la última de esas líneas, que es la que nos interesa.
$ curl -s https://www.eltiempo.es/murcia.html | grep -A 2 "<section class=\"-block-3 c-tib\">" | tail -n 1
                <span data-temp="10" class="c-tib-text"><span data-temp="10" data-temp-include-units="">10&deg;</span></span>
Por último, obtendremos el valor de la temperatura, que en este caso es 10. Para ello, si tomamos como separador de campos el caracter comillas dobles (“), la temperatura es el campo número 2:
$ curl -s https://www.eltiempo.es/murcia.html | grep -A 2 "<section class=\"-block-3 c-tib\">" | tail -n 1 | cut -d "\"" -f 2
10
Indicar que esta forma de obtener la temperatura de una ciudad depende de que la web usada (en este caso https://www.eltiempo.es) no cambie su código html. Cuando lo haga, habrá que adaptar el script para que siga funcionando.
Algunas webs ofrecen este tipo de información en formato JSON que no se ve afectado por estos cambios en código html. Suelen implicar solicitar keys de acceso y en ocasiones son de pago.
Al igual que para obtener la temperatura de una ciudad, este método es extensible a cualquier web que ofrezca información de interés.

No hay comentarios:

Publicar un comentario