Pode utilizar a função pandas read_html() para ler tabelas HTML num DataFrame pandas.

Esta função utiliza a seguinte sintaxe básica:

 df = pd. read_html (' //en.wikipedia.org/wiki/National_Basketball_Association ') 

O exemplo seguinte mostra como utilizar esta função para ler uma tabela de nomes de equipas da NBA a partir desta página da Wikipédia.

Exemplo: Ler tabela HTML com Pandas

Antes de utilizar o read_html() provavelmente terá de instalar o lxml:

 pip install lxml 

Nota Se estiver a utilizar um bloco de notas Jupyter, tem de reiniciar o kernel depois de efetuar esta instalação.

De seguida, podemos utilizar o read_html() para ler todas as tabelas HTML nesta página da Wikipédia:

 import pandas as pd import numpy as np import matplotlib. pyplot as plt from unicodedata import normalize #lê todas as tabelas HTML de um URL específico tabs = pd. read_html (' //en.wikipedia.org/wiki/National_Basketball_Association ') #exibe o número total de tabelas lidas len (tabs) 44 

Podemos ver que foi encontrado um total de 44 tabelas HTML nesta página.

Sei que a tabela em que estou interessado tem a palavra "Division", pelo que posso utilizar o comando jogo para obter apenas tabelas HTML que contenham esta palavra:

 #lê tabelas HTML de um URL específico com a palavra "Divisão" tabs = pd. read_html (' //en.wikipedia.org/wiki/National_Basketball_Association ', match="Division") #exibe o número total de tabelas lidas len (tabs) 1 

Posso então listar os nomes das colunas da tabela:

 #define table df = tabs #list all column names of table list (df) [('Division', 'Eastern Conference'), ('Team', 'Eastern Conference'), ('Location', 'Eastern Conference'), ('Arena', 'Eastern Conference'), ('Capacity', 'Eastern Conference'), ('Coordinates', 'Eastern Conference'), ('Founded', 'Eastern Conference'), ('Joined', 'Eastern Conference'), ('Unnamed: 8_level_0', 'Eastern Conference')] 

Só estou interessado nas duas primeiras colunas, pelo que posso filtrar o DataFrame para conter apenas estas colunas:

 #filtrar DataFrame para conter apenas as duas primeiras colunas df_final = df. iloc [:, 0:2] #renomear colunas df_final. columns = [' Division ', ' Team '] #ver as primeiras linhas do DataFrame final print (df_final. head ()) Division Team 0 Atlantic Boston Celtics 1 Atlantic Brooklyn Nets 2 Atlantic New York Knicks 3 Atlantic Philadelphia 76ers 4 Atlantic Toronto Raptors 

O quadro final contém apenas as colunas "Divisão" e "Equipa".