El raspado es una habilidad muy esencial para que todos puedan obtener datos de cualquier sitio web. Raspar y analizar una tabla puede ser un trabajo muy tedioso si usamos el analizador de sopa Beautiful estándar para hacerlo. Por lo tanto, aquí describiremos una biblioteca con la ayuda de la cual cualquier tabla se puede extraer fácilmente de cualquier sitio web. Con este método, ni siquiera tiene que inspeccionar los elementos de un sitio web, solo tiene que proporcionar la URL del sitio web. Eso es todo y el trabajo se realizará en segundos.
Instalación
Puede usar pip para instalar esta biblioteca:
pip install html-table-parser-python3
Empezando
Paso 1: importa las bibliotecas necesarias requeridas para la tarea
# Library for opening url and creating # requests import urllib.request # pretty-print python data structures from pprint import pprint # for parsing all the tables present # on the website from html_table_parser.parser import HTMLTableParser # for converting the parsed data in a # pandas dataframe import pandas as pd
Paso 2: Definición de una función para obtener contenidos del sitio web
# Opens a website and read its # binary contents (HTTP Response Body) def url_get_contents(url): # Opens a website and read its # binary contents (HTTP Response Body) #making request to the website req = urllib.request.Request(url=url) f = urllib.request.urlopen(req) #reading contents of the website return f.read()
Ahora, nuestra función está lista, por lo que debemos especificar la URL del sitio web desde el que necesitamos analizar las tablas.
Nota: Aquí tomaremos el ejemplo del sitio web moneycontrol.com ya que tiene muchas tablas y le dará una mejor comprensión. Puede ver el sitio web aquí .
Paso 3: tablas de análisis
# defining the html contents of a URL. xhtml = url_get_contents('Link').decode('utf-8') # Defining the HTMLTableParser object p = HTMLTableParser() # feeding the html contents in the # HTMLTableParser object p.feed(xhtml) # Now finally obtaining the data of # the table required pprint(p.tables[1])
Cada fila de la tabla se almacena en una array. Esto se puede convertir fácilmente en un marco de datos de pandas y se puede usar para realizar cualquier análisis.
Código completo:
Python3
# Library for opening url and creating # requests import urllib.request # pretty-print python data structures from pprint import pprint # for parsing all the tables present # on the website from html_table_parser.parser import HTMLTableParser # for converting the parsed data in a # pandas dataframe import pandas as pd # Opens a website and read its # binary contents (HTTP Response Body) def url_get_contents(url): # Opens a website and read its # binary contents (HTTP Response Body) #making request to the website req = urllib.request.Request(url=url) f = urllib.request.urlopen(req) #reading contents of the website return f.read() # defining the html contents of a URL. xhtml = url_get_contents('https://www.moneycontrol.com/india\ /stockpricequote/refineries/relianceindustries/RI').decode('utf-8') # Defining the HTMLTableParser object p = HTMLTableParser() # feeding the html contents in the # HTMLTableParser object p.feed(xhtml) # Now finally obtaining the data of # the table required pprint(p.tables[1]) # converting the parsed data to # dataframe print("\n\nPANDAS DATAFRAME\n") print(pd.DataFrame(p.tables[1]))
Producción:
Publicación traducida automáticamente
Artículo escrito por yashpasari123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA