Raspe tablas desde cualquier sitio web usando Python

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

Deja una respuesta

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