Blog

Postado em em 13 de outubro de 2021

Web Scraping com Power BI – Buscando Informações da Web

Hoje eu vou te mostrar como fazer web scraping com Power BI para obter dados da web de forma automática para facilitar seu trabalho!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Você provavelmente já ouvir falar em Web Scraping Power BI, mas você sabe como fazer Web scraping com Power BI?

Na aula queremos te mostrar um passo a passo para trazer informações da internet com Power BI, para assim facilitar sua vida e automatizar seus trabalhos e análises!

No exemplo de hoje vamos utilizar um site de busca de imóveis então você vai poder fazer uma busca na web automática com um exemplo prático que de fato podemos utilizar!

E aí, bora aprender a buscar dados da web com Power BI para facilitar a agilizar suas análises de dados com webscraping?

0) Link

Primeiramente vamos acessar o site que vamos usar de base para trazer as informações que queremos:

  • Acessar o site de imóveis
  • Limitar e escolher o local e os filtros necessários (no exemplo foi Filtrado o Bairro de Botafogo, no Rio de Janeiro)
  • Obter/copiar o link que acessa a página em questão
Imagem1 5

1) Tabela modelo inicial

Com o link obtido, vamos, na guia Página Inicial:

  • Clicar em Obter dados
  • Clicar em Web (como abaixo)
  • Inserir o Link copiado do site (acima)
  • Clicar em OK
Busca na web automática
Busca na web automática

A partir daqui teremos as tabelas obtidas daquele link obtido anteriormente. Devemos observar as tabelas que o Power BI conseguiu “obter” daquele site. Identificando a tabela correta, vamos marcar a tabela e clicar em Conectar dados.

Caso a tabela correta sugerida não seja carregada, siga os passos abaixo:

  • No canto inferior esquerdo, clique em “Adicionar a Tabela Usando Exemplos”
  • Adicionaremos os títulos das colunas conforme as informações que queremos
  • Preencheremos quantas linhas forem necessárias com as informações de exemplos que queremos, até que o Power BI entenda a lógica e que informações pegar
  • No exemplo abaixo já foram preenchidas 2 linhas (em preto), e ele já tentou identificar o resto (em cinza)
Buscar dados da web com Power BI
Buscar dados da web com Power BI
  • Preencha quantas linhas forem necessárias para ele preencher as outras colunas com informações. Estando tudo correto (verifique com o site mostrado acima da tabela), clique em OK
  • Marcaremos a tabela criada através do exemplo (Grupo tabelas Personalizadas abaixo), e clicaremos em Transformar Dados
Imagem4 3

Assim, teremos nossa consulta/tabela criada e aberta no Power Query (editor de consultas no Power BI).

No menu aberto à esquerda, vamos renomeá-la para “Aptos” (inicialmente ela entra no Power Query com o nome original – no Exemplo foi como Tabela 5)

2) Criar parâmetro: número de páginas

Não queremos buscar informações apenas da 1ª página do site de imóveis, correto?

Para buscar as informações das outras páginas, devemos criar uma função auxiliar no Power BI. Acompanhe com a gente.

Quando trocamos de página lá no site de imóveis, outro link é gerado. Observe abaixo:

Webscraping Power BI
Webscraping Power BI

Vamos criar inicialmente uma tabela auxiliar, para receber os números das páginas até onde queremos buscar informações (de 1 até X páginas, limitadas por você). Então:

  • Iremos em Nova Fonte > Consulta Nula
  • Colocar a fórmula “= {1..10}” e dar Enter. Teremos como resultado:
Imagem6 2
  • No menu à esquerda renomearemos a consulta/lista criada como “Paginas”

Vamos, após essas etapas, criar um parâmetro que receba o número máximo de páginas que queremos interpretar nessa consulta ao site de imóveis. Veja:

  • Clicaremos em Página Inicial
  • Gerenciar parâmetros
  • Novo Parâmetro
  • Configuraremos da seguinte maneira:
Imagem7 1
  • Voltaremos na nossa consulta/lista criada “Paginas” e mudaremos a fórmula para “= {1..Maximo}” (repare que agora a nossa lista tem números de 1 a 15)
  • Transformaremos a lista “Paginas” numa tabela, indo em Transformar > Para a Tabela > OK

3) Criar função: pegar os links de cada página

  • Com a nossa tabela “Paginas” criada, vamos renomear a primeira coluna (padrão vem como Column1) para “Num Paginas”.
  • Alteraremos o tipo de dados dessa coluna para Texto, porque ela fará parte de um texto final (link a ser acessado, mais à frente)
  • Vamos copiar o link que vimos recentemente que contem a numeração das páginas: link secundário
  • Iremos adicionar o link secundário como uma coluna personalizada, com a seguinte fórmula:
="https://www.zapimoveis.com.br/venda/imoveis/rj+rio-de-janeiro+zona-sul+botafogo/?pagina=" 
& [Num Paginas] &
"&onde=,Rio%20de%20Janeiro,Rio%20de%20Janeiro,Zona%20Sul,Botafogo,,,,BR%3ERio%20de%20Janeiro%3ENULL%3ERio%20de%20Janeiro%3EZona%20Sul%3EBotafogo,-22.956712,-43.198498&transacao=Venda&tipo=Im%C3%B3vel%20usado"

Teremos o seguinte resultado:

Imagem8 1

Repare que aqui temos exatamente o que queríamos: a coluna de páginas gerando links diferentes, um para cada página. Com isso, seguiremos.

4) Adaptando nossa tabela de Aptos para ser uma função -> interpretar os links

Vamos transformar a consulta Aptos, com os passos feitos e informações que foram obtidas para a 1ª página do site de imóveis, para que ela seja genérica e consiga acessar os diversos links e páginas necessárias.

Iremos clicar em Aptos, e em Página Inicial ir em Editor Avançado.

Mudaremos o que está escrito para:

(URL)=>
let
   Fonte = Web.BrowserContents(URL),
   #"Tabela extraída de HTML" = Html.Table(Fonte, {{"Preço", ".simple-card__price"}, {"Endereço", ".simple-card__address"}, {"Metragem", ".js-areas:nth-last-child(4)"}, {"Quartos", ".js-bedrooms:nth-last-child(3)"}}, [RowSelector=".card-container"]),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Tabela extraída de HTML",{{"Preço", type text}, {"Endereço", type text}, {"Metragem", type text}, {"Quartos", type text}})

in
    #"Tipo Alterado"
Imagem9

5) Abrir links

Vamos agora voltar na consulta pronta de “Paginas” para utilizar a função criada. Iremos em:

  • Adicionar Coluna, clicar em Invocar Função Personalizada
Imagem10

Abrirá o conjunto de tabelas obtido de cada página respectiva, em cada linha, numa coluna ao lado (chamamos acima de “Links a abrir”). Você deverá clicar no ícone à direita do nome da coluna, para “abrir” as tabelas. Dessa forma:

Imagem11

Ao clicar em OK e excluindo as duas primeiras colunas (Num Paginas e Pagina, na imagem acima), observe o resultado:

Web scraping Power BI
Web scraping Power BI

Portanto, conseguimos buscar as informações das primeiras 15 páginas lá do site de imóveis, como queríamos lá no começo!

Caso precise substituir algum valor nulo ou erro, das colunas, vá na opção de Substituir Valores na Guia Transformar.

Agora você pode seguir para montar qualquer visualização com esses dados que sejam da sua vontade para ver os dados finais obtidos. No vídeo de aula colocamos as informações numa tabela resumida e ordenamos os valores a partir do preço dos imóveis.

Conclusão de Web Scraping com Power BI

Nada melhor do que um exemplo real para nossa aplicação, não é mesmo? A ideia é buscar as informações desses imóveis, como preço, metragem, endereço e quantidade de quartos.

Dessa forma você vai poder fazer suas análises de forma muito mais fácil sem precisar ficar consultando página por página dentro do site de buscas.

Na aula aprendemos como trazer informações (web scraping Power BI) de algumas páginas do site de imóveis, como proposto inicialmente.

Aprendemos passo a passo como fazer essa importação/obtenção de dados, que vai te facilitar muito!

Valeu, pessoal! Fique ligado no nosso canal do Youtube para mais conteúdo de Excel, VBA e Power BI! Um abraço!

Hashtag Treinamentos

Para acessar outras publicações de Power BI, clique aqui!


Quer aprender mais sobre Power BI com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador