Web Scraping é uma técnica de mineração de dados que permite a extraí-los de sites da web convertê-los em informação estruturada

No artigo Avaliação de imóveis urbanos: normas e metodologia vimos que a Avaliação de imóveis é uma aplicação de ciência de dados cujo objetivo é fornecer uma estimativa de valor ou custo de um imóvel.

No artigo Avaliação de imóveis urbanos em 9 etapas vimos que a pesquisa de dados de mercado é uma das etapas principais do processo de avaliação e que a coleta de dados pode ser feita de diversas formas, desde métodos mais tradicionais como fichas, planilhas e roteiros de entrevistas, até procedimentos automatizados, como o web scraping.

No artigo anterior, elaboramos uma pequena análise superficial de dados para chegarmos a um insight sobre preços médios de imóveis de determinadas tipologias no contexto do Plano Reviver Centro, no Rio. Para fazer esta análise, coletamos dados através de uma técnica de web scraping utilizando o software Power BI, da Microsoft, que também foi utilizado para o tratamento, análise inicial e construção de um pequeno painel para visualização dos dados.

Este artigo consiste num guia passo a passo de como automatizar parte da pesquisa de dados de mercado através de web scraping, extraindo dados em massa de diversas páginas, com a utilização da versão gratuita do software Power BI.

Guia passo a passo web scraping com Power BI

Sumário do artigo



Introdução

Dados

A Ciência de dados (ou Data Science) é uma área interdisciplinar voltada para o estudo e a análise de dados econômicos, financeiros e sociais, estruturados e não-estruturados, que visa a extração de conhecimento, detecção de padrões e/ou obtenção de insights para possíveis tomadas de decisão.

A Inteligência de dados, mais especificamente, refere-se ao processo de transformar dados estruturados e não estruturados em informações, e integrá-las a sistemas ou softwares para que sejam visualizadas, analisadas e interpretadas e possam subsidiar tomadas de decisões e/ou fazer estimativas e previsões.

No âmbito corporativo a inteligência de dados é frequentemente chamada de inteligência de negócios (ou Business Intelligence - BI), e sua utilização crescente pelas empresas tem contribuído para o desenvolvimento de ferramentas e softwares cada vez mais poderosos e acessíveis e que, claro, podem ser alimentados com quaisquer tipos de dados.

A utilização de dados urbanos para alimentação de modelos que forneçam previsões e subsidiem decisões para a gestão das cidades ou para o mercado imobiliário pode ser chamada de inteligência de dados urbanos, ou Inteligência Urbana.

A avaliação de imóveis, quando utiliza as melhores e mais modernas técnicas com base na literatura e no arcabouço normativo atual é um exemplo de aplicação de ciência de dados, e de inteligência de dados urbanos especificamente.

ETL e web scraping

O conceito de inteligência de dados engloba todo um processo de coleta, organização e análise de dados retirados de diferentes fontes, com objetivo que os resultados obtidos a partir dessa ação possam ser processados por ferramentas de análise e de visualização.

Neste sentido, a primeira fase do processo é geralmente chamada de ETL (da sigla em inglês Extract, Transform and Load, ou Extrair, Transformar e Carregar).

Os termos são intuitivos, primeiro os dados são extraídos da origem, e esta etapa pode acontecer através de uma consulta em um banco de dados, download de uma página web, um arquivo salvo em um computador ou, como faremos aqui, web scraping, que é uma forma de minerar dados de uma ou várias páginas da web de forma automatizada.

Logo após a extração os dados são tratados - ou transformados - de maneira que todos tenham o padrão e formato necessários para a análise que se pretenda fazer, num processo que também pode - e deve - ser automatizado.

Por fim, os dados são carregados no sistema onde serão cruzados, relacionados, tratados, analisados e visualizados.

Existem diversos softwares, aplicativos e sistemas para cada uma e para todas as etapas do ETL e da Inteligência de dados, neste texto vamos descrever o processo passo a passo para fazer e automatizar a etapa de Extração de dados através da técnica de web scraping com uma das ferramentas mais simples e poderosas para este uso - e gratuita. No artigo seguinte daremos continuidade com a automatização das etapas de transformação e carregamento dos dados com a mesma ferramenta.

Power BI

Lançado pela Microsoft em 2015, o Power BI herdou um conjunto de ferramentas que foram inicialmente lançadas como suplementos de inteligência de dados do Excel, o que contribuiu para a rápida aceitação do software (LAGO; ALVES, 2018).

As ferramentas são o Power Query, um editor de consultas para extração, tratamento e carregamento de dados, o Power Pivot, que permite a conexão de várias fontes de informação e dados já transformados no Power Query, e o Power View, que é uma tecnologia de visualização de dados que permite criar gráficos, mapas e outros elementos visuais interativos.

Segundo a Microsoft, “Power Query é uma tecnologia de conexão de dados que permite que você descubra, conecte, combine e refine fontes de dados para atender às suas necessidades de análise.” Nesse contexto, o Power Query permite conectar, importar e tratar os dados utilizando a linguagem M (nome informal de Power Query Formula Language).

Ainda que existam versões destas ferramentas incorporadas ao Excel, no Power BI a velocidade de carregamento dos dados é muito maior, não existe a limitação de linhas que o Excel possui (não existe o conceito de planilha na verdade), o Power BI trabalha com tabelas que podem ter milhões de registros e se conecta virtualmente com todas as fontes de dados, possui uma integração entre sua versão desktop e um serviço na nuvem e alguns recursos específicos que são exclusivos, o tipo de web scraping que faremos neste artigo, por exemplo, não pode ser feito no Power Query do Excel, apenas no Power BI.

Além disso, o Power BI é gratuito, diferentemente do Excel. Embora existam planos pagos (a partir de US$9,90 por mês), tudo o que faremos aqui pode ser feito na versão gratuita, e muito mais. Basicamente tudo que pode ser feito no Power BI desktop é gratuito, e a maior parte do Power BI online também, no que se refere a tratamento e visualização dos dados (os planos pagos oferecem recursos exclusivos principalmente relacionados a compartilhamento de dados entre membros de organizações e segurança para dados sigilosos).

Um detalhe é que para fazer o download da versão gratuita é necessário um email “corporativo ou educacional”, não pode ser um email gratuito como @gmail.com ou @hotmail.com, precisa ser de um domínio específico, como @inteligenciaurbana.org por exemplo. No entanto, caso você não possua um, existe uma forma de criar um email “corporativo” gratuito no próprio site da Microsoft, e então utilizar este email para criar a conta em powerbi.microsoft.com, onde o software pode ser baixado.

Pesquisa de dados de mercado via web scraping com Power BI

Neste artigo vou apresentar as etapas passo a passo de uma coleta de dados de mercado no site Zap imóveis, similar à pesquisa que fiz neste artigo, vamos colher de forma automática dados referentes ao preço de oferta de venda, endereço, área, número de quartos, número de vagas de garagem e número de banheiros de cada elemento da amostra.

No artigo seguinte prosseguiremos com o tratamento e padronização dos dados, numa rotina que, uma vez criada, pode extrair centenas ou milhares de dados de uma vez e que pode ser constantemente atualizada com um clique. No final do processo ainda é gerado um algoritmo (em Linguagem M) que pode ser facilmente aproveitado para outras consultas.

A mesma técnica pode ser usada em outros portais de imóveis, evidentemente, e para quaisquer tipos de outros dados disponíveis em sites da web. Este tipo de web scraping que o Power BI faz limita-se, no entanto, aos elementos visíveis nas páginas (o que, no caso do Zap imóveis, por exemplo, te impede de coletar desta maneira o nome e telefone do ofertante, que só estão disponíveis a partir de uma caixa de diálogo chamada a partir de um link).

Isto pode ser um fator limitante para alguns tipos de avaliação de imóveis, mas não um fator impeditivo, haja visto que a identificação das fontes pode ser dispensada conforme o item 8.2.1.3.3 da NBR 14653/2, e embora possa impactar o grau de fundamentação máximo que possa ser atingido (tabelado para caso de adoção de tratamento por fatores ou inferência estatística com modelo de regressão linear), a possibilidade de produzir insights e extrair informação a partir de milhares de dados obtidos com poucos cliques, abre um novo conjunto de possibilidades, desde análises superficiais e rápidas como a que fizemos neste artigo (porém embasadas) até a adoção de metodologias alternativas como redes neurais artificiais e outros modelos baseados em inteligência artificial e Machine Learning.

O Power BI, inclusive, conta com recursos que se apoiam no Machine Learning para identificar dados interessantes, guiar visualização de tendências e ainda apontar desvios nos seus dados.

Além do mais, avaliação de imóveis é apenas um exemplo de uma aplicação específica de ciência de dados, muito mais pode ser feito no domínio da inteligência urbana e em outros domínios, e de forma muito simples com a utilização de ferramentas como esta.

Passo 1: Fonte da pesquisa

Para este exemplos vamos pesquisar dados de ofertas de venda de imóveis da tipologia apartamento no bairro de Botafogo, no Rio de Janeiro, que serão extraídos do site Zap Imóveis.

Para isso, é necessário selecionar as opções “comprar” em “O que você Precisa?” (1), “apartamento” em “qual tipo?” (2) e digitar o bairro e a cidade em “onde?” (3) como pode ser visto na figura 01. É claro que isso pode variar se for feito em outro site, ou mesmo neste site no futuro. Também seria possível digitar vários bairros ou cidades para extração.

Guia passo a passo web scraping power bi - figura 01
Figura 01

Uma observação importante para este caso específico é que a tipologia (apartamento neste caso) precisa ser marcada. Como podemos ver, no caso do Zap imóveis especificamente, o card que concentra as informações de cada oferta de venda (e que se transformará em uma linha na nossa tabela de dados) apresenta as informações de preço, descrição, endereço, área, número de quartos, número de vagas de garagem e número de banheiros, mas não apresenta a tipologia. Neste caso, ainda que, por alguma razão, seja desejável uma amostragem com mais de uma tipologia, precisaremos criar uma consulta inicial para cada tipologia e depois reuni-las, e assim cada consulta inicial possuirá este atributo (e no próximo artigo iremos observar que eventuais demais consultas são automatizadas e não representarão um retrabalho, acompanhe).

Uma outra observação importante para este caso específico é que devemos marcar a opção “Com endereço completo” (1) em “mais filtros” (2), como pode ser visto na figura 02, para que eliminemos da amostra ofertas com endereço incompleto. Este tipo de cuidado e reflexão inicial é importante, uma vez que vamos criar um algoritmo que automatiza uma rotina.

Guia passo a passo web scraping power bi - figura 02
Figura 02

Feita a filtragem inicial no próprio site, deve-se copiar (ctrl+c) a URL resultante na barra de endereços do navegador (3). Por se tratar de um endereço dinâmico e filtrado, será uma URL longa e complexa, cheia de caracteres especiais, neste caso é esta:

https://www.zapimoveis.com.br/venda/apartamentos/rj+rio-de-janeiro+zona-sul+botafogo/?endereco=completo&onde=,Rio%20de%20Janeiro,Rio%20de%20Janeiro,Zona%20Sul,Botafogo,,,neighborhood,BR%3ERio%20de%20Janeiro%3ENULL%3ERio%20de%20Janeiro%3EZona%20Sul%3EBotafogo,-22.951193,-43.180784&tipo=Im%C3%B3vel%20usado&tipoUnidade=Residencial,Apartamento&transacao=Venda

URL significa Uniform Resource Locator (Localizador Uniforme de Recursos, em tradução livre), é o "endereço" da página, de qualquer página na Web.

Passo 2: Consulta inicial no Power BI

A figura 03 mostra a tela inicial do Power BI Desktop (cujo download deve de ter sido feito em powerbi.microsoft.com, conforme já mencionado).

Para iniciar a consulta devemos selecionar a guia “Página inicial” (1), clicar em “Obter dados” (2) e então selecionar a opção “Web” (3). Se na primeira vez que utilizar o Power BI a opção “Web” não aparecer neste menu de acesso rápido deve-se clicar em “Mais…” e então, na janela que se abre, selecionar “outro” e então “Web”.

Guia passo a passo web scraping power bi - figura 03
Figura 03

Na sequência aparecerá uma janela semelhante à da figura 04, deve manter-se selecionada a opção “básico” (1) e manter selecionado a opção "texto" em "url" (2), e então colar (ctrl+v) a URL copiada no passo anterior nesta de entrada de texto e, por fim, clicar em “OK” (3).

Guia passo a passo web scraping power bi - figura 04
Figura 04

Passo 3: Web scraping usando exemplos

Depois de alguns segundos estabelecendo a conexão, surgirá uma nova janela semelhante à da figura 05.

À esquerda são listadas algumas tabelas de dados que o código fonte do site já possui estruturadas ou que os algoritmos do Power BI montam automaticamente (1). Não são todos os sites que apresentam estas tabelas, e geralmente elas não vem tão bem estruturadas quanto gostaríamos. Neste caso, embora elas existam, vamos ignorá-las e selecionar a opção “Adicionar a Tabela usando Exemplos” (2), que é uma funcionalidade exclusiva do Power BI e que nos trará mais flexibilidade na extração e tratamento dos dados.

Guia passo a passo web scraping power bi - figura 05
Figura 05

Então o Power BI carregará o site pesquisado (1) na área livre da janela da figura 06, aqui já maximizada para melhor visualização. O site carregado na janela do Power BI pode vir com algumas distorções, como pode ser observado, mas nada que atrapalhe o trabalho. Abaixo do site existe uma tabela (2), que inicialmente possui apenas uma coluna, chamada “coluna 1”, a coluna pode ser renomeada com um clique duplo em seu rótulo e novas colunas podem ser adicionadas clicando-se no asterisco (3) ao lado do rótulo da coluna.

Guia passo a passo web scraping power bi - figura 06
Figura 06

Nesta etapa devemos adicionar novas colunas para receber os dados que pretendemos extrair, e criar algo semelhante à figura 07. A tabela criada (1) deve ter uma coluna para cada atributo, e os rótulos já podem ser renomeados, como preferirmos, para identificá-los, neste caso: “preco-venda”, “endereco”, “area”, “quartos”, “vagas-garagem” e “banheiros”.

Guia passo a passo web scraping power bi - figura 07
Figura 07

Neste ponto inicia a parte mais importante e interessante, devemos começar a preencher a tabela com os dados que observamos no site aberto na janela logo acima, e depois de 1 ou 2 exemplos digitados, para cada atributo, o Power BI entende o padrão e completa o restante da coluna.

Na figura 08 começamos a preencher a coluna “preco-venda”, começamos a digitar o valor 1.012.000 na terceira linha (já que neste caso, os dois primeiros cards de ofertas estão com o valor “sob consulta”, podemos começar do terceiro, ou de qualquer outro, não tem problema). Enquanto digitamos, o Power BI nos sugere opções, podemos selecionar a que melhor se encaixa com um clique duplo.

Guia passo a passo web scraping power bi - figura 08
Figura 08

Na sequência começamos a digitar o valor 990.000 na quarta linha da mesma coluna, referente ao preço de oferta de venda do quarto imóvel da página, escolhemos a melhor opção dentre as sugeridas pelo Power BI e, neste caso, isso já foi o suficiente para que o restante da coluna fosse preenchido automaticamente, como pode ser observado na figura 09.

Guia passo a passo web scraping power bi - figura 09
Figura 09

Então repetimos o processo na coluna “endereco” e começamos a digitar 'Rua Real Grandeza, Botafogo' e escolhemos a melhor opção dentre as sugestões, conforme figura 10.

Guia passo a passo web scraping power bi - figura 10
Figura 10

Neste caso, como podemos ver na figura 11, apenas um valor digitado foi suficiente para que o Power BI preenchesse o restante da coluna.

Guia passo a passo web scraping power bi - figura 11
Figura 11

Repetimos o processo para as demais colunas e, ao fim, teremos um resultado semelhante ao mostrado na figura 12. Repare que neste exemplos em alguns casos foi necessário digitar duas linhas, em outros apenas uma, pode ser que em alguns casos sejam necessárias três, dificilmente mais que isso (os valores preenchidos automaticamente aparecem mais claro).

Temos uma tabela com 24 linhas de dados, referentes aos 24 imóveis que, no caso deste site, aparecem na “primeira página”, cujo URL colamos no início da consulta. Agora devemos clicar em OK (1).

Guia passo a passo web scraping power bi - figura 12
Figura 12

Após esta parte voltamos para a janela anterior, e agora, à esquerda existe um subdiretório chamado “Tabelas Personalizadas” com a tabela que acabamos de criar, neste exemplo, chamada “tabela 8” (1), e que pode ser visualizada na área à direita, conforme figura 13.

Neste ponto já temos a opção de carregar a tabela com os dados, mas não é o que queremos. Além de transformar os dados e mesclar diferentes consultas (o que veremos no artigo seguinte), precisamos transformar esta mera consulta em uma função na linguagem M (a linguagem de programação do Power Query). Então, com apenas a “Tabela 8” selecionada, devemos clicar em “Transformar dados” (2).

Guia passo a passo web scraping power bi - figura 13
Figura 13

Passo 4: Transformar consulta em função

Neste ponto seremos conduzidos à interface do editor de consultas do Power Query, que é a ferramenta do Power BI que estamos utilizando neste artigo, veremos algo semelhante à figura 14.

A interface no Power Query é constituída por uma barra superior com guias e ferramentas, num esquema muito semelhante aos softwares do pacote Office, e a parte de baixo dividida em três partes:

  • À esquerda (1), na coluna consultas aparece uma lista das consultas, funções e parâmetros deste projeto, neste caso, apenas a consulta que acabamos de fazer, e que por enquanto se chama “Tabela 8”;
  • À direita (2), na coluna Configurações de consulta temos, mais acima, as propriedades da consulta selecionada (onde é possível, por exemplo, renomear a consulta) e, mais abaixo, uma lista com as etapas de transformação que já foram aplicadas. Até este ponto três etapas de transformação já foram aplicadas ali, cada nova etapa será listada, e sempre poderemos “voltar no tempo” e editar ou excluir etapas passadas. Cada uma destas etapas também correspondem às linhas do código em linguagem M que está sendo gerado.
  • No centro (3) temos, acima, a linha de fórmulas que mostra o código em linguagem M da etapa de transformação que está selecionada à direita e, mais abaixo, no espaço maior, visualizamos o conteúdo da consulta selecionada (neste caso, a “tabela 8”)

Guia passo a passo web scraping power bi - figura 14
Figura 14

Para prosseguir, renomeamos a nossa consulta que será transformada em função com o nome “buscar-imoveis-zap” (1) e então devemos selecionar a guia “Exibição” (2) e clicar em “Editor Avançado” (3), conforme figura 15.

Guia passo a passo web scraping power bi - figura 15
Figura 15

O editor avançado mostra o código em linguagem M que é o algoritmo de nossa consulta até agora. O código é composto por um "bloco" let (o bloco de código aninhado após a palavra reservada "let") que possui três linhas com a definição de variáveis que representam cada uma das etapas de transformação já executadas até agora, e que podem ser editadas diretamente no código, se quisermos, e um "bloco" in (o código aninhado após a palavra reservada "in"), que corresponde à saída e apenas apresenta o nome da última variável, a última transformação portanto.

Como podemos observar na figura 16, na primeira etapa de transformação, na variável Source, temos uma função Web.BrowserContents, que tem como parâmetro, entre parênteses e entre aspas, aquela URL do site Zap imóveis que inserimos no início. A segunda linha de código do bloco let corresponde àquela extração de dados que fizemos preenchendo a tabela como exemplo, e a terceira linha é uma mudança de tipos de dados que o Power BI faz automaticamente (e que iremos refazer mais adiante, no artigo seguinte).

Guia passo a passo web scraping power bi - figura 16
Figura 16

O que precisamos entender aqui é que esta consulta está pesquisando apenas a primeira página do conjunto de ofertas de imóveis da tipologia e bairro que selecionamos no site Zap imóveis, os 24 primeiros de milhares de elementos, divididos em dezenas ou centenas de páginas, cada uma delas com 24 elementos.

O que queremos é fazer a mesma consulta que fizemos nesta página em todas as demais, ou em quantas páginas quisermos, 20 páginas, 40 páginas, tanto faz. Neste momento, se nós acrescentarmos o trecho &pagina=2 (mais adiante vamos ver o porquê) à URL da linha da variável Source deste código da figura 16 e clicarmos em “concluído”, o Power BI vai refazer a consulta, automaticamente, e retomar uma nova tabela com outros 24 dados, referentes à página 2, os padrões de pesquisa (que definimos preenchendo a tabela lá no início) são os mesmos para qualquer página.

Para poder aplicar estes parâmetros de uma vez só a uma lista de páginas, dezenas ou centenas, precisamos transformar este código de consulta em uma função. Para isso precisamos “mexer com um pouquinho de código”, devemos “envolver” todo este código que está no editor avançado em um outro bloco let e, após ele, no fim, colocar um novo bloco in, conforme figura 17.

Guia passo a passo web scraping power bi - figura 17
Figura 17

Na figura 17 também observamos que, por estarmos criando uma função, este novo bloco let deve ter um nome e um parâmetro. A sintaxe de abertura de função em linguagem M é algo assim:

let Nomedafunção=(nomedoparâmetro) =>

Demos o nome de Buscarzap à nossa função, pode ser o nome que quisermos, e demos o nome de url ao nosso parâmetro. O parâmetro da função, neste caso, é justamente a URL que será consultada, e precisamos que seja uma lista delas, então chamamos o parâmetro de url para ficar mais simples, poderia ser outro nome se quiséssemos.

Como também pode ser observado na figura 17, substituímos a URL consultada por simplesmente o nome do parâmetro (url), sem aspas. Por fim, na sequência do bloco in da função precisamos colocar o nome da própria função, sem aspas. O resultado da nossa função ficou assim:

let Buscarzap=(url) => let Source = Web.BrowserContents(url), #"Extracted Table From Html" = Html.Table(Source, {{"preco-venda", ".simple-card__price"}, {"endereco", ".simple-card__address"}, {"area", ".js-areas"}, {"quartos", ".js-bedrooms.feature__item"}, {"vagas-garagem", ".js-parking-spaces.feature__item"}, {"banheiros", ".js-bathrooms.feature__item"}}, [RowSelector=".card-container"]), #"Changed Type" = Table.TransformColumnTypes(#"Extracted Table From Html",{{"preco-venda", type text}, {"endereco", type text}, {"area", type text}, {"quartos", type text}, {"vagas-garagem", type text}, {"banheiros", type text}}) in #"Changed Type" in Buscarzap

Podemos clicar em “concluído” (1) na janela do editor avançado.

Então somos devolvidos à interface do editor de Consultas do Power Query. Como podemos observar na figura 18, na coluna à esquerda, nossa consulta chamada “buscar-imoveis-zap” se transformou numa função (o símbolo à esquerda, ƒx, demonstra isso) e, na parte central, já não existe mais a tabela, mas o que seria a interface da função, onde podemos inserir o parâmetro e invocá-la.

Guia passo a passo web scraping power bi - figura 18
Figura 18

Neste momento, se inserirmos qualquer URL de uma página do Zap imóveis neste campo e clicarmos em “invocar”, o Power BI fará uma nova consulta seguindo o mesmo algoritmo para a URL inserida, mas ainda não é isso que queremos.

Passo 5: Criar lista de páginas para consulta

Neste passo vamos criar a lista de URLs que vai servir de parâmetro para a nossa função criada no passo anterior. Primeiro, vamos entender como funciona a URL de um site deste tipo. A URL que nós consultamos inicialmente é esta:

https://www.zapimoveis.com.br/venda/apartamentos/rj+rio-de-janeiro+zona-sul+botafogo/?endereco=completo&onde=,Rio%20de%20Janeiro,Rio%20de%20Janeiro,Zona%20Sul,Botafogo,,,neighborhood,BR%3ERio%20de%20Janeiro%3ENULL%3ERio%20de%20Janeiro%3EZona%20Sul%3EBotafogo,-22.951193,-43.180784&tipo=Im%C3%B3vel%20usado&tipoUnidade=Residencial,Apartamento&transacao=Venda

Pode parecer confusa, mas ela tem uma lógica simples, a primeira parte (em preto) é a URL principal e seus subdiretórios, divididos por barras /, depois temos um conector que é o sinal ? (em vermelho), e então uma série de filtros (em cinza) separados pelo conector & (em roxo), podemos observar quatro filtros nesta URL, cada filtro possui uma sintaxe chave=valor, onde a chave é o nome do filtro e o valor, bem, o valor é o valor.

A página da pesquisa, neste caso, seria também um filtro. De modo que, no site Zap imóveis, como em diversos outros sites, quando selecionamos a página 2, ou 3, ou assim por diante, para vermos os imóveis seguintes da lista, a URL que está no navegador é alterada, ainda que não observemos isso normalmente. No caso deste site é acrescentado o trecho &pagina=2 à URL quando navegamos à página 2, e assim para qualquer página. A ordem em que cada filtro de URL aparece não importa, basta que estejam separados da URL principal por um conector ? e separados entre si por um conector &.

A esta altura já entendemos que todas as URLs nas quais pretendemos efetuar a consulta possuirão a seguinte estrutura:

https://www.zapimoveis.com.br/venda/apartamentos/rj+rio-de-janeiro+zona-sul+botafogo/?endereco=completo&onde=,Rio%20de%20Janeiro,Rio%20de%20Janeiro,Zona%20Sul,Botafogo,,,neighborhood,BR%3ERio%20de%20Janeiro%3ENULL%3ERio%20de%20Janeiro%3EZona%20Sul%3EBotafogo,-22.951193,-43.180784&tipo=Im%C3%B3vel%20usado&tipoUnidade=Residencial,Apartamento&transacao=Venda&pagina=X

Com o X destacado em verde sendo o número da página, de 1 até onde nós quisermos.

Duas observações antes de prosseguirmos:

  • Não vemos o filtro pagina=1 na URL da primeira página porque ele é desnecessário (para a primeira página) e o navegador o ignora, mas se acrescentarmos &pagina=1 à URL funciona normalmente, e somos conduzidos à mesma página.
  • Outros sites possuirão outros nomes e outras estruturas para o filtro de página, pode ser pg=2, page=2, ou pg=b, pag=c, ou pg=200, pg=300. Outros ainda poderão apresentar a página não como um filtro, mas com um subdiretório, algo como /pg2, ou /02. É preciso verificar este padrão para cada site.

Como no nosso caso a parte variável da URL será um número inteiro de 1 a N, precisamos neste ponto criar uma lista com os números referentes à quantidade de páginas que pretendemos consultar. Para isso, na interface do editor de consultas do Power Query, devemos selecionar a guia “Página Inicial” (1), clicar em “Nova fonte” (2), e então selecionar a opção “Consulta nula” (3), conforme figura 19.

Guia passo a passo web scraping power bi - figura 19
Figura 19

Então uma consulta vazia é criada, por enquanto com o nome "Consulta1”. Para nosso exemplo, vamos fazer uma consulta nas páginas 1 a 20 daquela URL, para isso, devemos selecionar a consulta nula criada e, na linha de fórmulas (1), apenas digitar = {1..20}, e uma lista de 1 a 20 será criada, como podemos ver na figura 20.

Logo após criar a lista devemos transformar ela em uma tabela, para isso, com a guia “Transformar” (2) selecionada, devemos clicar em “Para a tabela” (3), como também podemos observar na figura 20, e depois clicar em OK na janela que se abre.

Guia passo a passo web scraping power bi - figura 20
Figura 20

Depois de transformar nossa lista em tabela, precisamos mudar o tipo de dados desta única coluna da tabela para “texto”, pois eles farão parte da URL. Para mudar o tipo de dados de uma coluna devemos clicar o símbolo à esquerda do rótulo da coluna (1) e então selecionar o tipo de dados que queremos, que neste caso é “texto” (2), como podemos ver na figura 21.

Guia passo a passo web scraping power bi - figura 21
Figura 21

Agora podemos renomear esta consulta na coluna à direita (1), neste caso vamos chamá-la de “zap-botafogo-apto”, e renomear também o rótulo da coluna (2), para isso basta um clique duplo no rótulo, neste caso vamos dar o rótulo de “id-pag”. Na sequência, para criarmos a lista de URLs de fato devemos selecionar a guia “Adicionar coluna” (3) e então clicar em “Coluna personalizada” (4), como podemos ver na figura 22.

Guia passo a passo web scraping power bi - figura 22
Figura 22

Na janela que se abre, devemos dar um nome à nova coluna (1), que neste caso deve ser o nome do parâmetro da nossa função, ou seja, url. No campo “Fórmula de coluna personalizada” (2) devemos colar a nossa URL da consulta inicial, colocá-la entre aspas, e fazer duas pequenas edições: acrescentar ao final o trecho &pagina=, que deve ser inserido antes do “fecha aspas” da URL, acrescentar, após as aspas, o conector &, e então inserir a nossa coluna id-pag, para isso basta posicionar o cursor após o conector &, selecionar o id-pag no campo “Colunas disponíveis” (3) à direita e clicar em “inserir” (4), e ele já será formatado como [#"id-pag"] automaticamente. Por fim, podemos clicar em “OK” (5), tudo conforme a figura 23.

Guia passo a passo web scraping power bi - figura 23
Figura 23

Retornamos então à interface do editor de consultas do Power Query, e podemos verificar que nossa tabela tem uma segunda coluna, com rótulo “url” e com todas as URLs que queremos consultar, agora com o filtro de página para cada uma delas, da página 1 até a página 20, figura 24.

Guia passo a passo web scraping power bi - figura 24
Figura 24

Passo 6: Invocar a função

Neste momento, devemos invocar a função que criamos no passo 4, usando como parâmetro a coluna “url” da tabela que criamos no passo 5. Para isso, ainda observando a figura 24, com esta tabela “zap-botafogo-apto” selecionada, devemos selecionar a guia “Adicionar coluna” (1) e então clicar em “Invocar função personalizada” (2).

Na janela que se abre devemos dar um nome para a nova coluna, neste caso vamos chamar de “Buscarzap” (1), tanto faz. Depois, no campo “Consulta de função”, devemos selecionar a função que criamos, neste caso a função “buscar-imoveis-zap” (2), e isso vai abrir um novo campo abaixo, chamado “url (opcional)”, para o qual devemos selecionar o parâmetro da nossa função, que neste caso é a coluna “url” da tabela atual (3), e então clicar em “OK” (4), tudo conforme figura 25.

Guia passo a passo web scraping power bi - figura 25
Figura 25

O processo de consulta em 20 páginas pode levar alguns minutos, quando concluído estaremos de volta à interface do editor de consultas do Power query, e agora nossa tabela tem três colunas, na terceira coluna, chamada “Buscarzap”, cada linha tem como conteúdo uma nova tabela - ou table -, como podemos ver na figura 26.

Guia passo a passo web scraping power bi - figura 26
Figura 26

Passo 7: Expandir a Tabela

Para transformar nossa consulta em uma única tabela com todos os dados pesquisados basta expandir a coluna “Buscarzap”, para isso devemos clicar no símbolo à esquerda do rótulo da coluna (1), desmarcar a opção “Use o nome da coluna original como prefixo” (2) e então clicar em “OK” (3), conforme figura 27.

Guia passo a passo web scraping power bi - figura 27
Figura 27

Então a tabela será expandida, e agora temos as colunas da nossa consulta original (preco-venda, endereco, area, quartos, vagas-garagem e banheiros) e 480 linhas (24 linhas para cada uma das 20 páginas pesquisadas), conforme podemos ver na figura 28.

Guia passo a passo web scraping power bi - figura 28
Figura 28

E nosso obejtivo neste artigo está cumprido, temos dois algoritmos: uma função de buscas no site Zap imóveis, e uma consulta específica das 20 primeiras páginas de ofertas de venda de imóveis da tipologia apartamento em Botafogo.

Editando o algoritmo de consulta

Como já mencionamos, no artigo seguinte nós iremos aplicar transformações a esta consulta, vamos padronizar, filtrar, manipular e mesclar os dados, criando rotinas automatizadas para isso, se inscreva em nossa newsletter para ser notificado. Mas antes, apenas como uma demonstração rápida do poder e flexibilidade de um processo automatizado, vamos fazer uma pequena edição no algoritmo desta consulta.

Vamos acessar novamente o editor avançado, selecionando a guia “Exibição” e clicando em “Editor avançado”. Na janela que se abre temos o código, em Linguagem M, desta nossa consulta, conforme figura 29.

Guia passo a passo web scraping power bi - figura 29
Figura 29

Como podemos ver, o código reúne, em seu bloco let, todos os passos de transformação aplicados nesta consulta, em forma de algoritmo, desde o primeiro passo que foi aquela lista de 1 a 20 que criamos, isto está na primeira linha do bloco let, na variável Source. Se nós substituirmos, manualmente, aquele número 20 pelo número 40 e clicarmos em “OK”, - depois de alguns minutos de processamento - teremos uma nova tabela, agora com 960 linhas, como podemos ver na figura 30. Todas as rotinas das transformações posteriores foram realizadas, sem nenhum retrabalho.

Guia passo a passo web scraping power bi - figura 30
Figura 30

Conclusão

Neste artigo criamos algoritmos de web scraping de dados de mercado no site Zap imóveis para uma consulta de dados de oferta de venda de imóveis da tipologia apartamento no Bairro de Botafogo, Rio de Janeiro.

No artigo seguinte vamos aplicar transformações, manipular e multiplicar esta consulta, no sentido de concluir o processo de ETL (Extract, Transform and Load) dos nossos dados de mercado.

Por agora nós já podemos carregar os dados para a interface principal do Power BI (isso não irá nos impedir de continuar a transformação depois). Para isso basta selecionar a guia “Página inicial” (1) e então clicar em “Fechar e aplicar” (2), conforme figura 31.

Guia passo a passo web scraping power bi - figura 31
Figura 31

Depois de alguns minutos de carregamento isso nos devolverá à interface principal do Power BI, onde podemos salvar o projeto criado para continuarmos o processo depois. Fazemos isso da mesma forma como fazemos com outros softwares da Microsoft, clicando em “Arquivo” e então em “Salvar”. Os arquivos do Power BI possuem a extensão “.pbix”.

Além do blog, o site Inteligência Urbana disponibiliza páginas com referências para livros, cursos e leis e normas relacionadas aos temas que tratamos aqui. Caso você tenha interesse pode conferir nossos serviços oferecidos e entrar em contato quando quiser. Se quiser ser alertado da publicação de material novo pode assinar a nossa newsletter, e muito obrigado pela atenção até aqui!

Principais referências