Raspado de datos de predicción meteorológica usando Python y BS4

Este artículo gira en torno al raspado de datos de predicción del clima usando python y la biblioteca bs4. Revisemos los componentes utilizados en el script:

BeautifulSoup : es una poderosa biblioteca de Python para extraer datos de archivos HTML/XML. Crea un árbol de análisis para páginas analizadas que se pueden usar para extraer datos de archivos HTML/XML. 

Requests : es una biblioteca HTTP de Python. Hace que las requests HTTP sean más simples. solo necesitamos agregar la URL como argumento y get() obtiene toda la información.

Extraeremos datos de https://weather.com/en-IN/weather/tenday/l/INKA0344:1:IN . Paso 1: ejecute el siguiente comando para obtener el contenido almacenado de la URL en el objeto de respuesta (archivo): 

Python3

import requests
# to get data from website
file = requests.get("https://weather.com/en-IN/weather/tenday/l/INKA0344:1:IN")

  Paso 2: analizar el contenido HTML: 

Python3

# import Beautifulsoup for scraping the data
from bs4 import BeautifulSoup
soup = BeautifulSoup(file.content, "html.parser")

  Paso 3: al extraer los datos del sitio meteorológico, ejecute el siguiente código: 

Python3

# create empty list
list =[]
all = soup.find("div", {"class":"locations-title ten-day-page-title"}).find("h1").text
  
# find all table with class-"twc-table"
content = soup.find_all("table", {"class":"twc-table"})
for items in content:
    for i in range(len(items.find_all("tr"))-1):
                # create empty dictionary
        dict = {}
        try:  
                        # assign value to given key
 
            dict["day"]= items.find_all("span", {"class":"date-time"})[i].text
            dict["date"]= items.find_all("span", {"class":"day-detail"})[i].text           
            dict["desc"]= items.find_all("td", {"class":"description"})[i].text
            dict["temp"]= items.find_all("td", {"class":"temp"})[i].text
            dict["precip"]= items.find_all("td", {"class":"precip"})[i].text
            dict["wind"]= items.find_all("td", {"class":"wind"})[i].text
            dict["humidity"]= items.find_all("td", {"class":"humidity"})[i].text
        except: 
                     # assign None values if no items are there with specified class
 
            dict["day"]="None"
            dict["date"]="None"
            dict["desc"]="None"
            dict["temp"]="None"
            dict["precip"]="None"
            dict["wind"]="None"
            dict["humidity"]="None"
 
        # append dictionary values to the list
        list.append(dict)

find_all: se utiliza para recoger todos los elementos HTML de la etiqueta pasados ​​como argumento y sus descendientes.
find: Buscará los elementos de la etiqueta pasada.
list.append(dict): Esto agregará todos los datos a la lista de tipo list.

  Paso 4: convierta el archivo de lista en un archivo CSV para ver los datos organizados del pronóstico del tiempo. Use el siguiente código para convertir la lista en un archivo CSV y almacenarlo en el archivo output.csv: 

Python3

import pandas as pd
convert = pd.DataFrame(list)
convert.to_csv("output.csv")

.

Sintaxis: pandas.DataFrame(datos=Ninguno, índice: Opcional[Colección] = Ninguno, columnas: Opcional[Colección] = Ninguno, dtype: Unión[str, numpy.dtype, ExtensionDtype, Ninguno] = Ninguno, copy: bool = False ) 

Parámetros: datos: Dict puede contener series, arrays, constantes u objetos similares a listas. 

índice: se utiliza para el marco resultante. El valor predeterminado será RangeIndex si no hay información de indexación como parte de los datos de entrada y no se proporciona un índice. columnas: etiquetas de columna que se usarán para el marco resultante. El valor predeterminado será RangeIndex (0, 1, 2, …, n) si no se proporcionan etiquetas de columna. 

dtype: Se utiliza para establecer el valor predeterminado. 

copiar: Copia los datos de la entrada. el valor predeterminado es falso.

Python3

# read csv file using pandas
a = pd.read_csv("output.csv")
print(a)

Producción :

 

Publicación traducida automáticamente

Artículo escrito por romy421kumari 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 *