Saltar al contenido

Raspado de Wunderground – PythonForBeginners.com

Visión general

Trabajar con API es divertido y educativo.

Muchas empresas como Google, Reddit y Twitter lanzan su API al público
para que los desarrolladores puedan desarrollar productos que funcionan con su servicio.

Trabajar con API le permite aprender los detalles básicos.

En este post trabajaremos la API Weather Underground.

Meteorología subterránea (Wunderground)

Crearemos una aplicación que se conectará a ‘Wunderground‘y recuperar.
Previsiones meteorológicas, etc.

Wunderground proporciona pronósticos meteorológicos locales y de largo alcance, informes meteorológicos,
mapas y condiciones climáticas tropicales para ubicaciones en todo el mundo.

API

Una API es un protocolo destinado a ser utilizado como interfaz por componentes de software.
para comunicarse entre sí. Una API es un conjunto de instrucciones de programación y
estándares para acceder a aplicaciones de software basadas en la web (como las anteriores).

Con las aplicaciones de API se comunican entre sí sin el conocimiento del usuario o
intervención.

Empezando

Lo primero que debemos hacer cuando queremos usar una API es ver si el
la empresa proporciona cualquier documentación de API. Dado que queremos escribir una solicitud para
Wunderground, iremos a Wundergrounds sitio web

En la parte inferior de la página, debería ver la “API meteorológica para desarrolladores”.

La documentación de la API

La mayoría de las funciones de la API requieren una clave de API, así que sigamos adelante y registremos
una clave antes de que comencemos a utilizar la API Weather.

En la documentación también podemos leer que las solicitudes de API se realizan a través de HTTP
y que las características de datos devuelven JSON o XML.

Para leer la documentación completa de la API, consulte este Enlace.

Antes de obtener la clave, primero debemos crear una cuenta gratuita.

La clave de API

El siguiente paso es registrarse para obtener la clave API. Simplemente ingrese su nombre, dirección de correo electrónico,
nombre del proyecto y sitio web y debería estar listo para comenzar.

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

Muchos servicios en Internet (como Twitter, Facebook …) requieren que
tener una “clave API”.

Una clave de interfaz de programación de aplicaciones (clave API) es un código pasado por
programas informáticos que llaman a una API para identificar el programa que llama, su desarrollador,
o su usuario al sitio web.

Las claves de API se utilizan para rastrear y controlar cómo se utiliza la API, por ejemplo
para evitar el uso malintencionado o el abuso de la API.

La clave de API a menudo actúa como un identificador único y un token secreto para
autenticación, y generalmente tendrá un conjunto de derechos de acceso en la API
asociado a ello.

Condiciones actuales en la ciudad de EE. UU.

Wunderground nos proporciona un ejemplo en la documentación de su API.

Condiciones actuales en la ciudad de EE. UU.

http://api.wunderground.com/api/0def10027afaebb7/conditions/q/CA/San_Francisco.json

Si hace clic en el botón “Mostrar respuesta” o copia y pega esa URL en su
navegador, deberías hacer algo similar a esto:

{
	"response": {
		"version": "0.1"
		,"termsofService": "http://www.wunderground.com/weather/api/d/terms.html"
		,"features": {
		"conditions": 1
		}
	}
		,	"current_observation": {
		"image": {
		"url":"http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png",
		"title":"Weather Underground",
		"link":"http://www.wunderground.com"
		},
		"display_location": {
		"full":"San Francisco, CA",
		"city":"San Francisco",
		"state":"CA",
		"state_name":"California",
		"country":"US",
		"country_iso3166":"US",
		"zip":"94101",
		"magic":"1",
		"wmo":"99999",
		"latitude":"37.77500916",
		"longitude":"-122.41825867",
		"elevation":"47.00000000"
		},
		.....

Condiciones actuales en Cedar Rapids

Sobre las “muestras de código” página podemos ver el código Python completo para recuperar el
temperatura actual en Cedar Rapids.

Copie y pegue esto en su editor favorito y guárdelo como desee.

Tenga en cuenta que debe reemplazar “0def10027afaebb7” con su propia clave API.

import urllib2
import json
f = urllib2.urlopen('http://api.wunderground.com/api/0def10027afaebb7/geolookup/conditions/q/IA/Cedar_Rapids.json')
json_string = f.read()

parsed_json = json.loads(json_string)

location = parsed_json['location']['city']

temp_f = parsed_json['current_observation']['temp_f']

print "Current temperature in %s is: %s" % (location, temp_f)

f.close()

Para ejecutar el programa en su terminal:

python get_current_temp.py

Su programa devolverá la temperatura actual en Cedar Rapids:

La temperatura actual en Cedar Rapids es: 68.9

¿Lo que sigue?

Ahora que hemos visto y probado los ejemplos proporcionados por Wunderground,
creemos un programa nosotros mismos.

The Weather Underground nos proporciona un montón de “Funciones de datos ” ese
nosotros podemos usar.

Es importante que lea detenidamente la información que contiene para comprender cómo
se puede acceder a las diferentes funciones.

Formato de URL de solicitud estándar

“Se puede acceder a la mayoría de las funciones de la API utilizando el siguiente formato.

Tenga en cuenta que se pueden combinar varias funciones en una sola solicitud “.

http://api.wunderground.com/api/0def10027afaebb7/features/settings/q/query.format

dónde:

0def10027afaebb7: Tu clave API

caracteristicas: Una o más de las siguientes características de datos

configuración (opcional): Ejemplo: lang: FR / pws: 0

consulta: La ubicación para la que desea información meteorológica

formato: json o xml

Lo que quiero hacer es recuperar el pronóstico para París.

La función de pronóstico devuelve un resumen del clima para los próximos 3 días.

Esto incluye temperaturas altas y bajas, un pronóstico de texto de cadena y las condiciones.

Pronóstico para París

Para obtener el pronóstico de París, primero tendré que averiguar el país
código para Francia, que puedo encontrar aquí:

Clima por país

El siguiente paso es buscar la “Característica: pronóstico” en la documentación de la API.

La cadena que necesitamos se puede encontrar aquí:

http://www.wunderground.com/weather/api/d/docs?d=data/forecast

Al leer la documentación, deberíamos poder construir una URL.

Realización de la llamada a la API

Ahora tenemos la URL que necesitamos y podemos comenzar con nuestro programa.

Ahora es el momento de realizar la llamada API a Weather Underground.

Nota: en lugar de utilizar el módulo urllib2 como hicimos en los ejemplos anteriores,
En este programa usaremos el módulo “solicitudes”.

Hacer la llamada a la API es muy fácil con el módulo de “solicitudes”.

r = requests.get("http://api.wunderground.com/api/your_api_key/forecast/q/France/
Paris.json")

Ahora, tenemos un objeto Respuesta llamado “r”. Podemos obtener toda la información que necesitamos
de este objeto.

Creando nuestra aplicación

Abra el editor de su elección, en la primera línea, importe el módulo de solicitudes.

Tenga en cuenta que el módulo de solicitudes viene con un decodificador JSON incorporado, que podemos usar
para los datos JSON. Eso también significa que no tenemos que importar el JSON
módulo (como hicimos en el ejemplo anterior cuando usamos el módulo urllib2)

import requests

Para comenzar a extraer la información que necesitamos, primero tenemos que ver
qué claves nos devuelve el objeto “r”.

El siguiente código devolverá las claves y debería volver [u’response’, u’forecast’]

import requests

r = requests.get("http://api.wunderground.com/api/your_api_key/forecast/q/France/
Paris.json")

data = r.json()

print data.keys()

Obteniendo los datos que queremos

Copie y pegue la URL (desde arriba) en un editor JSON.

yo suelo http://jsoneditoronline.org/ pero cualquier editor JSON debería hacer el trabajo.

Esto mostrará una descripción general más sencilla de todos los datos.

http://api.wunderground.com/api/your_api_key/forecast/q/France/Paris.json

Tenga en cuenta que se puede obtener la misma información a través del terminal, escribiendo:

r = requests.get("http://api.wunderground.com/api/your_api_key/forecast/q/France/
Paris.json")
print r.text

Después de inspeccionar la salida que se nos dio, podemos ver que los datos que estamos
interesado, está en la clave “pronóstico”. Regrese a nuestro programa e imprima el
datos de esa clave.

import requests

r = requests.get("http://api.wunderground.com/api/your_api_key/forecast/q/France/
Paris.json")

data = r.json()

print data['forecast']

El resultado se almacena en la variable “datos”.

Para acceder a nuestros datos JSON, simplemente usamos la notación entre corchetes, así:
datos[‘key’].

Naveguemos un poco más a través de los datos, agregando ‘simpleforecast’

import requests

r = requests.get("http://api.wunderground.com/api/your_api_key/forecast/q/France/
Paris.json")

data = r.json()

print data['forecast']['simpleforecast']

Todavía estamos obteniendo un rendimiento excesivo, pero espere, ya casi estamos allí.

El último paso de nuestro programa es agregar [‘forecastday’] y en lugar de imprimir
en todas y cada una de las entradas, usaremos un bucle for para recorrer el diccionario.

Podemos acceder a todo lo que queramos de esta manera, solo busque qué datos tiene
interesado en.

En este programa quería obtener el pronóstico para París.

Veamos cómo se ve el código.

import requests

r = requests.get("http://api.wunderground.com/api/0def10027afaebb7/forecast/q/France/Paris.json")
data = r.json()

for day in data['forecast']['simpleforecast']['forecastday']:
    print day['date']['weekday'] + ":"
    print "Conditions: ", day['conditions']
    print "High: ", day['high']['celsius'] + "C", "Low: ", day['low']['celsius'] + "C", '
'

Ejecuta el programa.

$ python get_temp_paris.py

Monday:
Conditions:  Partly Cloudy
High:  23C Low:  10C

Tuesday:
Conditions:  Partly Cloudy
High:  23C Low:  10C

Wednesday:
Conditions:  Partly Cloudy
High:  24C Low:  14C

Thursday:
Conditions:  Mostly Cloudy
High:  26C Low:  15C

La función de pronóstico es solo una de muchas. Dejaré que tú lo explores
el resto.

Una vez que comprenda una API y su salida en JSON, comprenderá
cómo funcionan la mayoría de ellos.

Más lectura

Una lista completa de API de Python
Clima subterráneo

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.