Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Dúvida] Lendo base de dados de arquivos diferentes - Pandas

Ola,

Estava estudando a respeito das formas que sao possiveis fazer a leitura dos arquivos como um dataset por arquivos de diferentes tipos, e ao testar com exemplo abaixo:

Porem ao realizar da mesma forma queria utilizar o link direto do site e nao o arquivo .html, ele da um erro que nao encontra as tabelas no site que contem

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Saberiam me dizer o motivo disso acontecer? gostaria de entender como funciona isso

5 respostas

Oi, Alexandre! tudo bem??

Quando nós utilizamos a função read_html, procuramos em um documento HTML ou página web a tag <table> e alguns elementos específicos de uma tabela. Então, as tabelas encontradas são armazenadas em uma lista. E aí você consegue visualizar essas tabelas da lista, indicando a posição que você deseja, assim como você fez no código da primeira imagem. Certamente, nesse endereço que você tentou utilizar diretamente do site, a tabela não estava com uma formatação que a função read_html conseguiu entender.

Tente, por exemplo, ler essa página Wikipédia. Aqui nós temos algumas informações sobre as unidades federativas do brasil. Se você ler a primeira tabela com a biblioteca Pandas, o resultado será assim:

(obs: só deixei as primeiras linhas do DataFrame)

indexPosiçãoUnidade federativaPopulação(Censo de 2010)[2]População(Prévia 2022)Mudança% da pop. totalPaís comparável (habitantes)
01São Paulo41 262 19946 024 937+11.5%22,2%Espanha (46 754 778)
12Minas Gerais19 597 33020 732 660+5.8%10,0%Burquina Fasso (20 903 273)
23Rio de Janeiro15 989 92916 615 526+3.9%8,0%Camboja (16 718 965)
34Bahia14 016 90614 659 023+4.6%7,1%Zimbabwe (14 862 924)
45Paraná10 444 52611 835 379+13.3%5,7%Tunísia (11 818 619)

Nesse caso deu certo, pois a página certamente está com os códigos HTML de uma forma que a função read_html consegue entender isso como uma tabela. Inclusive, é possível inspecionar o código de uma página ao clicar com o botão direito do mouse e ir na opção inspecionar. E aí, conseguimos ter a visualização abaixo.

Onde fiz a busca da tag <table> ele mostra onde as tabelas da página estão:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Espero que a explicação tenha ajudado :)

Ola, tudo bem?

Entendo, mas teria alguma outra forma de conseguir puxar esses dados através de qualquer pagina que contenham dados? nesse caso que mencionei que nao deu certo por nao conter a tag correta de table, teria alguma forma do python entender isso e puxar como tabela para um dataset?

solução!

Sim, existem outras bibliotecas do Python que podem ajudar a extrair dados em páginas da web, além da biblioteca pandas. Aqui estão algumas sugestões:

  • BeautifulSoup: É uma biblioteca de análise HTML e XML que pode ser usada para extrair informações de páginas da web. Ele pode ajudar a encontrar os elementos HTML que contêm a tabela e, em seguida, extrair os dados da tabela.

  • Requests: é uma biblioteca HTTP Python que permite enviar solicitações para servidores web e receber respostas.

Mas é importante destacar que para obter um DataFrame com os dados de uma tabela disponível em uma página web é importante que ela esteja bem estruturada.

Se os dados da tabela não estiverem em uma tag <table> na página da web, pode ser necessário usar técnicas mais avançadas para extrair os dados. Isso envolveria Identificar a estrutura dos dados e analisar o HTML manualmente para identificar padrões nos dados.

Entendi, perfeito!

Obrigado por todo apoio nessa duvida que surgiu, ja vou anotar para estudar sobre esses pontos

Maravilha, Alexandre!! Ótimos estudos!