1
resposta

Scraping de tabelas na wikipedia

Bom dia, fiz o curso de scraping aqui, mas na hora de partir para um site um pouco menos preparado, não estou conseguindo sair do lugar. Tentei fazer uma raspagem da wikipedia, campeonato brasileiro de 1971. Não consigo nem chegar à tabela que gostaria (a classificação final), nem sequer extrair os dados da tabela que acabo pegando (participantes). (tentei fazer esse mesmo processo em outros sites, o resultado foi ainda pior, de nem conseguir isolar a tabela).

Se alguém puder dar uma ajuda, agradeço.

o que fiz:

from bs4 import BeautifulSoup
import pandas as pd
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
import requests

website_url = requests.get('https://pt.wikipedia.org/wiki/Campeonato_Brasileiro_de_Futebol_de_1971').text

soup = BeautifulSoup(website_url,'lxml')
print(soup.prettify())

tabela = soup.find('table',{'class':'wikitable'})

links = tabela.findAll('a')

Times = []
for link in links:
  Times.append(link.get('title'))

print(Times)

df = pd.DataFrame()
df['Times'] = Times

df
1 resposta

Olá Daniel, tudo bem? Espero que sim!

Há uma forma mais simples de coletar tabelas de uma página web através da própria biblioteca pandas.

Você pode utilizar a função pd.read_html() que retornam todas as tabelas da página e colocam em uma lista. Você consegue acessar cada uma das tabelas através do índice dessa lista.

Na página em questão que você está usando, existem muitas tabelas e fazendo o código dessa forma:

dados = pd.read_html('https://pt.wikipedia.org/wiki/Campeonato_Brasileiro_de_Futebol_de_1971')

Retornaria uma lista de 30 tabelas. Você conseguiria acessar a tabela que deseja através do índice 25, fazendo:

dados[25]

Para facilitar a procura da tabela que deseja, você pode usar o argumento match da função, que irá selecionar somente as tabelas que possuem um determinado texto. Vamos usar o texto "Classificação ou rebaixamento" para encontrar a tabela mais facilmente:

dados = pd.read_html("https://pt.wikipedia.org/wiki/Campeonato_Brasileiro_de_Futebol_de_1971", match="Classificação ou rebaixamento")

Pronto! Dessa forma a única tabela que foi encontrada é a tabela que deseja, e você pode acessá-la através do código:

dados[0]

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!