En este artículo, veremos cómo extraer datos meteorológicos de Google. Google no tiene su propia API meteorológica, obtiene datos de weather.com y los muestra cuando busca en Google. Entonces, rasparemos los datos de Google.
Módulo necesario:
Requests: Requests le permite enviar requests HTTP/1.1 con mucha facilidad. Este módulo tampoco viene integrado con Python. Para instalar este tipo, escriba el siguiente comando en la terminal.
pip install requests
bs4: Beautiful Soup es una biblioteca que facilita extraer información de páginas web. Ya sea una página HTML o XML, que luego se puede usar para iterar, buscar y modificar los datos dentro de ella.
Acercarse:
- Importar el módulo
- Introduzca el nombre de la ciudad con la URL
"https://www.google.com/search?q="+"weather"+{cityname}
- Hacer una instancia de requests y pasar la URL
- Obtenga los datos sin procesar.
- Extraiga los datos requeridos de la sopa.
- Finalmente, imprima los datos requeridos.
Implementación paso a paso del código:
Paso 1: Importe las requests y la biblioteca bs4
Python3
# importing the library import requests from bs4 import BeautifulSoup
Paso 2: Cree una URL con el nombre de la ciudad ingresada y pásela a la función de obtención.
Python3
# enter city name city = "lucknow" # create url url = "https://www.google.com/search?q="+"weather"+city # requests instance html = requests.get(url).content # getting raw data soup = BeautifulSoup(html, 'html.parser')
Paso 3: Soup devolverá un montón de datos con etiquetas HTML. Por lo tanto, a continuación se muestra una parte de los datos de los cuales obtendremos todos los datos necesarios con la ayuda de la función de búsqueda y pasando el nombre de la etiqueta y el nombre de la clase.
<div class=”kvKEAb”><div><div><div class=”BNeawe iBp4i AP7Wnd”><div><div class=”BNeawe
iBp4i AP7Wnd”>13 °C</div></div></ div></div></div><div><div><div class=”BNeawe tAd8D AP7Wnd”>
<div><div class=”BNeawe tAd8D AP7Wnd”>Sábado 11:10 a. m.
Python3
# get the temperature temp = soup.find('div', attrs={'class': 'BNeawe iBp4i AP7Wnd'}).text # this contains time and sky description str = soup.find('div', attrs={'class': 'BNeawe tAd8D AP7Wnd'}).text # format the data data = str.split('\n') time = data[0] sky = data[1]
Paso 4: aquí list1 contiene todas las etiquetas div con un nombre de clase particular y el índice 5 de esta lista tiene todos los demás datos requeridos.
Python3
# list having all div tags having particular clas sname listdiv = soup.findAll('div', attrs={'class': 'BNeawe s3v9rd AP7Wnd'}) # particular list with required data strd = listdiv[5].text # formatting the string pos = strd.find('Wind') other_data = strd[pos:]
Paso 5: Imprimiendo todos los datos
Python3
# printing all the data print("Temperature is", temp) print("Time: ", time) print("Sky Description: ", sky) print(other_data)
Producción:
A continuación se muestra la implementación completa:
Python3
# importing library import requests from bs4 import BeautifulSoup # enter city name city = "lucknow" # creating url and requests instance url = "https://www.google.com/search?q="+"weather"+city html = requests.get(url).content # getting raw data soup = BeautifulSoup(html, 'html.parser') temp = soup.find('div', attrs={'class': 'BNeawe iBp4i AP7Wnd'}).text str = soup.find('div', attrs={'class': 'BNeawe tAd8D AP7Wnd'}).text # formatting data data = str.split('\n') time = data[0] sky = data[1] # getting all div tag listdiv = soup.findAll('div', attrs={'class': 'BNeawe s3v9rd AP7Wnd'}) strd = listdiv[5].text # getting other required data pos = strd.find('Wind') other_data = strd[pos:] # printing all data print("Temperature is", temp) print("Time: ", time) print("Sky Description: ", sky) print(other_data)
Producción:
Publicación traducida automáticamente
Artículo escrito por adityaprasad1308 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA