Encuentre el clima actual de cualquier ciudad usando la API de OpenWeathermap en Python

TheOpenWeatherMapa es un servicio que proporciona datos meteorológicos, incluidos datos meteorológicos actuales, pronósticos y datos históricos a los desarrolladores de servicios web y aplicaciones móviles.

Proporciona una API con extremos JSON, XML y HTML y un nivel de uso gratuito limitado. Hacer más de 60 llamadas por minuto requiere una suscripción paga desde USD 40 por mes. El acceso a los datos históricos requiere una suscripción a partir de 150 USD al mes. Los usuarios pueden solicitar información meteorológica actual, pronósticos extendidos y mapas gráficos (que muestran la cobertura de nubes, la velocidad del viento, la presión y la precipitación).

Para usar esta API de datos meteorológicos actuales, se debe necesitar la clave API, que se puede obtener desde aquí .

Nota: el usuario debe crear una cuenta en openweathermap.org y luego solo puede usar las API.
 

Módulos necesarios: 

requests
json

A continuación se muestra la implementación: 

Python3

# Python program to find current
# weather details of any city
# using openweathermap api
 
# import required modules
import requests, json
 
# Enter your API key here
api_key = "Your_API_Key"
 
# base_url variable to store url
base_url = "http://api.openweathermap.org/data/2.5/weather?"
 
# Give city name
city_name = input("Enter city name : ")
 
# complete_url variable to store
# complete url address
complete_url = base_url + "appid=" + api_key + "&q=" + city_name
 
# get method of requests module
# return response object
response = requests.get(complete_url)
 
# json method of response object
# convert json format data into
# python format data
x = response.json()
 
# Now x contains list of nested dictionaries
# Check the value of "cod" key is equal to
# "404", means city is found otherwise,
# city is not found
if x["cod"] != "404":
 
    # store the value of "main"
    # key in variable y
    y = x["main"]
 
    # store the value corresponding
    # to the "temp" key of y
    current_temperature = y["temp"]
 
    # store the value corresponding
    # to the "pressure" key of y
    current_pressure = y["pressure"]
 
    # store the value corresponding
    # to the "humidity" key of y
    current_humidity = y["humidity"]
 
    # store the value of "weather"
    # key in variable z
    z = x["weather"]
 
    # store the value corresponding
    # to the "description" key at
    # the 0th index of z
    weather_description = z[0]["description"]
 
    # print following values
    print(" Temperature (in kelvin unit) = " +
                    str(current_temperature) +
          "\n atmospheric pressure (in hPa unit) = " +
                    str(current_pressure) +
          "\n humidity (in percentage) = " +
                    str(current_humidity) +
          "\n description = " +
                    str(weather_description))
 
else:
    print(" City Not Found ")

Producción : 
 

 Enter city name : Delhi
 Temperature (in kelvin unit) = 312.15
 atmospheric pressure (in hPa unit) = 996
 humidity (in percentage) = 40
 description = haze

 Enfoque 2:

Aquí, en el segundo enfoque, utilizaremos algunos de los siguientes módulos y funciones que se enumeran a continuación:

1. BeautifulSoup: es una biblioteca en python utilizada para extraer datos de archivos HTML y XML, es decir, con fines de web scraping. Genera un árbol de análisis a partir del código fuente de la página, que se puede utilizar para extraer datos de una manera más legible y jerárquica. Para instalar una hermosa biblioteca de sopas en el sistema, use el siguiente código en la terminal:

-->> pip install beautifulsoup

2. Requests: aquí usaremos el módulo de requests de Python para realizar requests HTTP. Para instalar, use el código a continuación en la terminal.

-->> pip install requests

3. Aquí estamos usando encabezados porque los encabezados contienen información específica del protocolo que se coloca antes del mensaje sin procesar, es decir, se recupera del sitio web.

4. Después de eso, usaremos la función get() y pasaremos la búsqueda de Google junto con el nombre de la ciudad para recuperar los datos de Google.

Luego usaremos beautifulsoup y analizaremos los datos HTML que se requieren del sitio web. 

5. Luego, usaremos la función select() para recuperar la información particular, como hora, información, ubicación, almacenarlos en alguna variable y almacenarlos aún más.

Después de todo esto, finalmente imprimiremos los datos, es decir, almacenados en las variables.

Python3

from bs4 import BeautifulSoup
import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
 
 
def weather(city):
    city = city.replace(" ", "+")
    res = requests.get(
        f'https://www.google.com/search?q={city}&oq={city}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&sourceid=chrome&ie=UTF-8', headers=headers)
    print("Searching...\n")
    soup = BeautifulSoup(res.text, 'html.parser')
    location = soup.select('#wob_loc')[0].getText().strip()
    time = soup.select('#wob_dts')[0].getText().strip()
    info = soup.select('#wob_dc')[0].getText().strip()
    weather = soup.select('#wob_tm')[0].getText().strip()
    print(location)
    print(time)
    print(info)
    print(weather+"°C")
 
 
city = input("Enter the Name of City ->  ")
city = city+" weather"
weather(city)
print("Have a Nice Day:)")
 
# This code is contributed by adityatri

Entrada de muestra:

Mahoba

Salida de muestra:

Enter the Name of City ->  Mahoba
Searching...

Mahoba, Uttar Pradesh
Monday, 12:00 am
Cloudy
27°C
Have a Nice Day:)

Publicación traducida automáticamente

Artículo escrito por ankthon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *