Voltar ao blogue
Casos de utilização
Robert MunceanuLast updated on Mar 31, 20269 min read

O Guia Completo para a Extração de Dados Imobiliários da Web

O Guia Completo para a Extração de Dados Imobiliários da Web

O mercado imobiliário está em constante expansão e, com ele, os agentes imobiliários e as empresas procuram encontrar novas soluções para antecipar o que o futuro reserva. Embora o setor imobiliário, em geral, não mude drasticamente da noite para o dia, é influenciado por demasiados fatores para que uma única pessoa, ou mesmo uma organização, consiga acompanhar tudo.

Então, os preços vão subir ou vão descer? Que bairros estão em alta? Existem imóveis que só precisam de uma remodelação para ver o seu valor disparar? Estas são apenas algumas das perguntas que os agentes imobiliários se fazem frequentemente.

Para responder a estas perguntas, são necessários muitos dados de pesquisa para comparação, e recolher manualmente tais quantidades de informação seria como uma busca inútil. É aqui que o web scraping se torna útil, pois recolhe e estrutura dados tão rapidamente quanto se pode dizer:

Como todos já sabemos, o web scraping é a força motriz da extração de dados! Portanto, se quiser saber mais sobre por que alguém iria querer extrair dados imobiliários da Internet e como fazê-lo corretamente, vamos continuar a nossa jornada juntos. Preparámos tanto uma solução «faça você mesmo» como um guia passo a passo sobre como a WebScrapingAPI pode fazer isso.

Por que deve extrair dados imobiliários

O web scraping garante que as informações extraídas sobre o setor imobiliário sejam precisas, credíveis e atualizadas. Desta forma, é possível prever se o mercado imobiliário irá disparar em breve ou ver em que faixa de preço o seu imóvel irá competir.

Para as empresas, os dados da Web são valiosos porque conduzem a melhores decisões, melhores preços e uma margem de lucro mais significativa. No entanto, o problema é que cada pedaço de informação precisa de ser o mais atualizado possível, tornando o web scraping a solução óbvia.

Os tipos de dados imobiliários mais frequentemente extraídos são os seguintes:

  • Tipo de imóvel
  • Preço de venda
  • Localização
  • Área
  • Comodidades
  • Preço de aluguer mensal
  • Lugares de estacionamento
  • Agente imobiliário

As informações acima podem fazer a diferença entre o sucesso e o fracasso de uma agência imobiliária. Fazem uma enorme diferença na comunicação, na estratégia e na eficiência, mas a maior vantagem é o grau de conhecimento que os agentes adquirem sobre os seus imóveis e o mercado. Depois disso, é apenas uma questão de encontrar o cliente certo.

Vamos dar uma vista de olhos a alguns cenários que ilustram o valor do web scraping:

Agências imobiliárias

  • Tomada de decisões: Assumir riscos faz parte do trabalho, mas isso não significa que o deva fazer às cegas. Pesquisar antes de comprar ou vender algo é obrigatório para o trabalho, e mais informação significa melhores negócios.
  • Prever o mercado: É crucial saber quando comprar e vender imóveis para obter o melhor e mais lucrativo resultado. Alguns tipos de imóveis disparam em popularidade, enquanto outros perdem o seu brilho. Algumas áreas prosperam, enquanto outras estagnam. Saber o que está por vir é a chave para a longevidade de um negócio.

Pessoas comuns

O web scraping não se resume a ajudar empresas. Na verdade, parte do que o torna tão popular é a facilidade com que uma única pessoa o pode utilizar. Claro, é necessário algum conhecimento de ciência da computação, mas existem muitos tutoriais para ajudar. Ora, este é um deles!

  • Compra e venda: É preciso deduzir com precisão o valor do imóvel antes de o comprar ou vender. Seria uma pena vender a casa onde cresceu e vê-la uma semana depois num site imobiliário pelo dobro do preço, não seria?
  • Investimento: Se gosta de investir em imóveis, seja comprando a um preço baixo para vender mais tarde com lucro ou simplesmente alugando o imóvel, é altamente recomendável saber rapidamente quando vai atingir o ponto de equilíbrio e que retorno deve esperar.

Ok, já chega de casos de uso. Vamos ver algum código!

Para começar, vamos supor que estamos à procura de uma nova casa em Nova Iorque. Queremos comprar um imóvel com pelo menos dois quartos e, claro, uma casa de banho. Assim, vamos iniciar a nossa pesquisa no Realtor, extrair dados de lá e compará-los para encontrar a melhor oferta.

Existem várias formas de extrair conteúdo de páginas web. Este artigo irá explicar dois métodos: um em que criamos o nosso web scraper do zero e outro em que utilizamos uma ferramenta já existente.

Primeiro, vamos tentar fazê-lo nós próprios. O código revelar-se-á útil mais tarde, quando utilizarmos uma ferramenta profissional de web scraping.  

Criar um web scraper para extrair dados imobiliários

Optei por escrever em Python devido à sua popularidade na área do web scraping. Temos um tutorial geral sobre a extração de dados da web em Python que deve consultar!

Inspecionar o código do site

Os dados que precisamos de extrair podem ser encontrados nas tags aninhadas da referida página web. Antes de começarmos a extrair, precisamos de os encontrar. Para tal, basta clicar com o botão direito do rato no elemento e selecionar «Inspecionar».

Aparecerá uma janela “Caixa do inspetor do navegador”, como esta:

Nesta janela, vamos navegar para encontrar as tags e classes sob as quais os nossos dados essenciais podem ser encontrados. Pode parecer um pouco intimidante no início, mas torna-se mais fácil com a experiência!

Encontre os dados que pretende extrair

Podemos ver que tudo o que precisamos de extrair está dentro da tag <li> com a classe «component_property-card». Se aprofundarmos ainda mais na tag, observamos que os dados referentes ao número de camas e casas de banho estão sob o atributo «data-label» com os valores «pc-meta-beds» e «pc-beta-baths», respetivamente. Sabendo isto, podemos prosseguir com a escrita do nosso código!

Prepare o ambiente de trabalho

Como mencionado anteriormente, vamos usar Python como nossa linguagem de programação, por isso precisa de o descarregar e instalar.

Pode usar qualquer IDE com que se sinta confortável, mas recomendo usar o PyCharm.

Depois de criar um novo projeto, facilite o seu trabalho utilizando estas bibliotecas:

  • Selenium: Utilizado para testes web e automatização de atividades do navegador.
  • BeautifulSoup: Utilizado para analisar documentos HTML e XML.
  • Pandas: Utilizado para manipulação de dados. Os dados extraídos serão armazenados num formato estruturado.

A instalação destas bibliotecas no projeto é bastante simples. Basta utilizar esta linha de comando no terminal do projeto: python -m pip install selenium beautifulsoup4 pandas

Escreva o código

Vamos começar por importar as bibliotecas que instalámos anteriormente:

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

Para extrair os dados do site, temos de carregá-los configurando o webdriver para utilizar o navegador Chrome. Para isso, basta especificar o caminho onde o chromedriver se encontra. Não se esqueça de adicionar o nome do executável no final — não apenas a sua localização!

driver = webdriver.Chrome('your/path/here/chromedriver')

Além do número de quartos e casas de banho, também podemos extrair a morada, o preço e, porque não, a área do imóvel. Quanto mais informações tivermos, mais fácil será decidir sobre uma nova casa.

Declare as variáveis e defina o URL do site a ser rastreado.

prices = []
beds = []
baths = []
sizes = []
addresses = []
driver.get('https://www.realtor.com/realestateandhomes-search/New-York_NY')

Precisamos de extrair os dados do site, que se encontram nas tags aninhadas, tal como explicado anteriormente. Encontre as tags com os atributos mencionados anteriormente e guarde os dados nas variáveis declaradas acima. Lembre-se de que só queremos guardar imóveis com, pelo menos, dois quartos e uma casa de banho!

content = driver.page_source
soup = BeautifulSoup(content, features='html.parser')
for element in soup.findAll('li', attrs={'class': 'component_property-card'}):
   price = element.find('span', attrs={'data-label': 'pc-price'})
   bed = element.find('li', attrs={'data-label': 'pc-meta-beds'})
   bath = element.find('li', attrs={'data-label': 'pc-meta-baths'})
   size = element.find('li', attrs={'data-label': 'pc-meta-sqft'})
   address = element.find('div', attrs={'data-label': 'pc-address'})

   if bed and bath:
       nr_beds = bed.find('span', attrs={'data-label': 'meta-value'})
       nr_baths = bath.find('span', attrs={'data-label': 'meta-value'})

       if nr_beds and float(nr_beds.text) >= 2 and nr_baths and float(nr_baths.text) >= 1:
           beds.append(nr_beds.text)
           baths.append(nr_baths.text)

           if price and price.text:
               prices.append(price.text)
           else:
               prices.append('No display data')

           if size and size.text:
               sizes.append(size.text)
           else:
               sizes.append('No display data')

           if address and address.text:
               addresses.append(address.text)
           else:
               addresses.append('No display data')

Ótimo! Temos toda a informação de que precisamos, mas onde devemos armazená-la? É aqui que a biblioteca pandas se torna útil e ajuda a estruturar os dados num ficheiro CSV para usarmos no futuro.

df = pd.DataFrame({'Address': addresses, 'Price': prices, 'Beds': beds, 'Baths': baths, 'Sizes': sizes})
df.to_csv('listings.csv', index=False, encoding='utf-8')

Se executarmos o código, será criado um ficheiro chamado «listings.csv» e, nele, os nossos preciosos dados!

Conseguimos! Criámos a nossa própria ferramenta de web scraping! Agora vamos direto ao assunto e ver quais os passos que precisamos de seguir e quais as linhas de código que precisamos de modificar para utilizar uma ferramenta de scraping.

Utilizar uma API de web scraping

Para este cenário, vamos usar a WebScrapingAPI, claro.

Criar uma conta gratuita na WebScrapingAPI

Para utilizar a WebScrapingAPI, é necessário criar uma conta. Não se preocupe, as primeiras 5000 chamadas de API são gratuitas e não é necessário partilhar quaisquer dados pessoais, como informações de cartão de crédito. Depois de criar a sua conta com sucesso e validar o seu e-mail, podemos avançar para o próximo passo.

Chave API

Para utilizar a WebScrapingAPI, terá de se autenticar através da chave API privada, que pode encontrar no painel de controlo da sua conta. Note que não deve partilhar esta chave com ninguém e, se suspeitar que foi comprometida, pode sempre repor a chave premindo o botão «Repor chave API».

Modificar o código

Perfeito! Agora que já tem a Chave API, vamos fazer as alterações necessárias.

Não vamos usar mais o WebDriver. Em vez disso, a biblioteca «requests» enviará a solicitação para a WebScrapingAPI e recuperará o código HTML do site como resposta.

import requests
from bs4 import BeautifulSoup
import pandas as pd

Em seguida, temos de preparar alguns parâmetros para a solicitação: a URL do site do qual queremos extrair dados (realtor) e a nossa Chave API.

url = "https://api.webscrapingapi.com/v1"
params = {
 "api_key": "XXXXXXX",
 "url": "https://www.realtor.com/realestateandhomes-search/New-York_NY"
}
response = requests.request("GET", url, params=params)

Não te esqueças de alterar o conteúdo que o beautifulsoup está a analisar. Em vez da fonte do chromedriver, vamos usar a resposta recebida da API.

content = response.text

A partir deste ponto, pode utilizar o mesmo código do cenário anterior. Os dados continuarão a ser armazenados num ficheiro CSV denominado «listings.csv».

Está tudo pronto!

E é basicamente isso; pode executar o código. A WebScrapingAPI fará o trabalho e obterá os dados necessários para encontrar a casa perfeita. Mas poderá perguntar-se: «Qual é a diferença entre usar a WebScrapingAPI e o scraper que criámos nós próprios?». Bem, deixe-me explicar.

Faça você mesmo vs. Pré-fabricado

Uma das vantagens mais significativas de usar a WebScrapingAPI são os seus proxies. O serviço dispõe de um enorme conjunto de proxies rotativos que garante o anonimato dos seus utilizadores enquanto navegam na web.

Esta funcionalidade também é útil quando alguém deseja extrair dados de um site em massa. Fazer múltiplas solicitações num site num curto espaço de tempo irá certamente bloquear o seu IP, interpretando-o como uma tentativa de ataque ou um bot com más intenções.

A utilização de um conjunto de proxies rotativos fará com que o site pense que vários utilizadores estão a interagir com ele, pelo que permanecerá indetetado e poderá fazer scraping durante todo o dia.

Muitos outros obstáculos podem surgir ao extrair dados da web, tais como CAPTCHAs ou impressão digital do navegador. Como seria de esperar, criámos a WebScrapingAPI para contornar todos esses obstáculos e tornar a extração de dados o mais fácil possível para si. Se quiser saber mais sobre este tema, consulte o nosso artigo sobre os problemas mais comuns que os web scrapers enfrentam.

Uma ferramenta, muitos casos de utilização

Todos concordamos que o scraping da web é uma excelente solução para o setor imobiliário, mas também pode utilizá-lo para outros fins. Aqui estão apenas alguns exemplos: monitorizar a concorrência, comparar preços de produtos e treinar algoritmos de aprendizagem automática.

Poderia continuar, mas isso já é um assunto totalmente novo. Não vou prolongar este artigo indefinidamente, por isso recomendo que consulte estes sete casos de utilização para ferramentas de web scraping.

Criar uma ferramenta de web scraping no seu tempo livre parece bastante interessante, mas há muitos aspetos a considerar, aspetos que irão consumir uma quantidade considerável de tempo de desenvolvimento. Aqui pode encontrar uma discussão aprofundada sobre ferramentas de web scraping DIY versus ferramentas pré-fabricadas.

Se estamos a falar de extrair algumas páginas web, construir a ferramenta por conta própria pode ser uma solução rápida. Ainda assim, um trabalho profissional precisa de uma ferramenta profissional, idealmente uma API, a WebScrapingAPI. Já mencionei a versão de avaliação gratuita?

Sobre o autor
Robert Munceanu, Desenvolvedor Full-Stack @ WebScrapingAPI
Robert MunceanuDesenvolvedor Full-Stack

Robert Munceanu é um programador Full Stack na WebScrapingAPI, contribuindo em todas as áreas do produto e ajudando a criar ferramentas e funcionalidades fiáveis que sustentam a plataforma.

Comece a construir

Pronto para expandir a sua recolha de dados?

Junte-se a mais de 2.000 empresas que utilizam a WebScrapingAPI para extrair dados da Web à escala empresarial, sem quaisquer custos de infraestrutura.