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