O guia completo para a recolha de dados imobiliários na Web
Robert Munceanu em 14 de julho de 2021

O mercado imobiliário está em constante expansão e, com ele, os agentes imobiliários e as empresas tentam encontrar novas soluções para identificar o que o futuro lhes reserva. Embora o sector imobiliário, em geral, não mude drasticamente de um dia para o outro, é afetado por demasiados factores que uma pessoa ou mesmo uma organização não consegue acompanhar.
Então, será que os preços vão subir ou descer? Que bairros estão a ser muito procurados? Há propriedades que precisam apenas de uma remodelação para aumentar o seu valor? Estas são apenas algumas das perguntas que os agentes imobiliários fazem frequentemente a si próprios.
Para responder a estas perguntas, são necessários muitos dados de investigação para comparação, e recolher manualmente tais quantidades de informação seria como uma caça aos gambozinos. É aqui que o web scraping é útil, pois recolhe e estrutura os dados tão rapidamente quanto se pode dizer:

Como já todos sabemos, o web scraping é a força motriz da extração de dados! Por isso, se quiser saber mais sobre a razão pela qual alguém quereria extrair dados imobiliários da Internet e como fazê-lo corretamente, vamos continuar a nossa viagem juntos. Preparámos uma solução "faça você mesmo" e um guia passo-a-passo sobre como a WebScrapingAPI o pode fazer.
Porque é que deve recolher dados imobiliários
A pesquisa na Web garante que as informações extraídas sobre o sector imobiliário são precisas, credíveis e actualizadas. Desta forma, é possível prever se o mercado imobiliário vai disparar em breve ou ver em que faixa de preço o seu imóvel vai 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 tem de ser o mais recente possível, o que faz da recolha de dados da Web a solução óbvia.
Os tipos de dados imobiliários mais frequentemente extraídos são os seguintes:
- Tipo de propriedade
- Preço de venda
- Localização
- Tamanho
- Amenidades
- Preço de aluguer mensal
- Lugares de estacionamento
- Agente imobiliário
As informações listadas acima podem fazer a diferença numa agência imobiliária. Faz uma enorme diferença na comunicação, estratégia e eficiência, mas a maior vantagem é o facto de os agentes conhecerem bem as suas propriedades e o mercado. Depois disso, é apenas uma questão de encontrar o cliente certo.
Vejamos alguns cenários que ilustram o valor da recolha de dados da Web:
Agências imobiliárias
- Tomada de decisões: Assumir riscos faz parte do trabalho, mas isso não significa que tenha de o fazer às cegas. Pesquisar antes de comprar ou vender algo é obrigatório para trabalhar, e mais informação significa melhores negócios.
- Prever o mercado: É crucial saber quando comprar e vender propriedades para obter o melhor e mais rentável resultado. Alguns tipos de imóveis ganham popularidade, enquanto outros perdem o seu brilho. Algumas zonas florescem enquanto outras estagnam. Saber o que está para vir é a chave para a longevidade de um negócio.
Pessoas comuns
A recolha de dados da Web não serve apenas para ajudar as empresas. Na verdade, parte do que a torna tão popular é a facilidade com que pode ser utilizada por uma única pessoa. Claro que é necessário ter alguns conhecimentos de informática, mas existem muitos tutoriais para o ajudar. Este é um deles!
- Compra e venda: É necessário deduzir com exatidão o valor do imóvel antes de o comprar ou vender. Seria uma pena vender a sua casa de infância e, uma semana depois, vê-la num site imobiliário pelo dobro do preço, não é verdade?
- Investir: Se gosta de investir em propriedades, quer comprando a um preço baixo para vender mais tarde com lucro, quer simplesmente alugando a propriedade, é altamente recomendável saber quando é que vai atingir o ponto de equilíbrio e que rendimentos deve esperar.
Ok, já chega de casos de utilização. Vamos ver algum código!
Para começar, vamos supor que estamos à procura de uma nova casa na cidade de Nova Iorque. Queremos comprar uma propriedade com, pelo menos, dois quartos e, claro, uma casa de banho. Por isso, vamos começar a nossa pesquisa no Realtor, extrair dados de lá e compará-los para encontrar o melhor negócio.
Existem várias formas de extrair conteúdo de páginas Web. Este artigo explica dois métodos: um em que criamos o nosso Web scraper de raiz 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 recolha de dados da Web.
Criar um raspador da Web para extrair dados imobiliários
Optei por escrever em Python devido à sua popularidade na extração de dados da Web. Temos um tutorial de uso geral para extrair dados da Web em Python que você deve conferir!
Inspecionar o código do sítio Web
Os dados que precisamos de extrair podem ser encontrados nas etiquetas aninhadas da referida página Web. Antes de começarmos a extrair os dados, temos de os encontrar. Para o fazer, basta clicar com o botão direito do rato no elemento e selecionar "Inspecionar".

Aparecerá uma janela "Browser Inspetor Box", como esta:

Nesta janela, vamos navegar para encontrar as etiquetas e as classes em que se encontram os nossos dados essenciais. Pode parecer um pouco intimidante no início, mas torna-se mais fácil com a experiência!
Encontrar os dados que pretende extrair
We can see that everything we need to extract is within the <li> tag with the class ‘component_property-card’. If we go even deeper in the tag, we observe that the data referring to the number of beds and bathrooms are under the attribute ‘data-label’ with the values ‘pc-meta-beds’ and ‘pc-beta-baths’, respectively. Knowing this, we can proceed with writing our code!
Preparar o espaço de trabalho
Como já foi referido, vamos utilizar Python como linguagem de programação, pelo que é necessário descarregá-la e instalá-la.
Pode utilizar qualquer IDE com que se sinta confortável, mas eu recomendo a utilização do PyCharm.
Depois de ter criado um novo projeto, facilite o seu trabalho utilizando estas bibliotecas:
- Selenium: Utilizado para testes na Web e automatização das actividades do browser.
- BeautifulSoup: Utilizado para analisar documentos HTML e XML.
- Pandas: Utilizado para a manipulação de dados. Os dados extraídos serão armazenados num formato estruturado.
Instalá-los dentro do projeto é bastante simples. Basta usar esta linha de comando no terminal do projeto: python -m pip install selenium beautifulsoup4 pandas
Escrever 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 os carregar configurando o webdriver para utilizar o navegador Chrome. Para isso, basta especificar o caminho onde o chromedriver está localizado. 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')
Para além do número de camas e casas de banho, também podemos extrair a morada, o preço e, porque não, o tamanho da propriedade. Quanto mais informações tivermos, mais fácil será decidir sobre uma nova casa.
Declare as variáveis e defina o URL do sítio Web a ser extraído.
preços = []
camas = []
banhos = []
tamanhos = []
endereços = []
driver.get('https://www.realtor.com/realestateandhomes-search/New-York_NY')
Precisamos de extrair os dados do sítio Web, que estão localizados nas etiquetas aninhadas, como explicado anteriormente. Encontre as etiquetas com os atributos mencionados anteriormente e guarde os dados nas variáveis declaradas acima. Lembre-se que só queremos guardar propriedades com pelo menos duas camas 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 a devemos guardar? É aqui que a biblioteca pandas é útil e ajuda a estruturar os dados num ficheiro csv para utilizarmos 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 recolha de dados da Web! Agora vamos direto ao assunto e ver que passos temos de seguir e que linhas de código temos de modificar para utilizar uma ferramenta de recolha de dados.
Utilizar uma API de recolha de dados da Web
Para este cenário, vamos utilizar a WebScrapingAPI, como é óbvio.
Criar uma conta WebScrapingAPI gratuita
Para utilizar a WebScrapingAPI, é necessário criar uma conta. Não se preocupe, as primeiras 5000 chamadas à API são gratuitas e não precisa de partilhar quaisquer dados pessoais, como informações do cartão de crédito. Depois de criar a sua conta e validar o seu e-mail, podemos passar ao passo seguinte.
Chave API

Para utilizar o WebScrapingAPI, terá de se autenticar através da chave privada da API, que pode encontrar no painel de controlo da sua conta. Tenha em atenção que não deve partilhar esta chave com ninguém e, se suspeitar que foi comprometida, pode sempre redefinir a chave premindo o botão "Redefinir chave da API".
Modificar o código
Perfeito! Agora que tem a chave da API, vamos fazer as alterações necessárias.
Já não estaremos a utilizar um webdriver. Em vez disso, a biblioteca 'requests' enviará o pedido à WebScrapingAPI e obterá o código HTML do site como resposta.
importar pedidos
from bs4 import BeautifulSoup
import pandas as pd
Em seguida, temos de preparar alguns parâmetros para o pedido: o URL do sítio Web do qual pretendemos extrair dados (corretor de imóveis) e a nossa chave de 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 se esqueça de alterar o conteúdo que o beautifulsoup está a analisar. Em vez da fonte do chromedriver, usaremos a resposta recebida da API.
conteúdo = response.text
Deste ponto em diante, você pode usar o mesmo código do cenário anterior. Os dados continuarão a ser armazenados num ficheiro CVS chamado 'listings.csv'.
Tudo pronto!
E é só isso: pode executar o código. A WebScrapingAPI fará o trabalho e obterá os dados necessários para encontrar a casa perfeita. Mas pode perguntar-se: "Qual é a diferença entre utilizar o WebScrapingAPI e o scraper que nós próprios construímos?". Bem, deixe-me explicar.
Bricolage vs. Pré-fabricado
Uma das vantagens mais significativas da utilização do WebScrapingAPI são os seus proxies. O serviço tem 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 pretende fazer scraping de um sítio Web em massa. Fazer vários pedidos a um sítio Web num curto espaço de tempo irá certamente bloquear o seu IP, pensando que se trata de uma tentativa de luto ou de um bot com más intenções.
A utilização de um pool de proxy rotativo fará com que o site pense que vários utilizadores estão a interagir com ele, para que não seja detectado e possa fazer scraping durante todo o dia.
Muitos outros obstáculos podem surgir quando se faz scraping na Web, como CAPTCHAs ou impressões digitais do navegador. Como seria de esperar, criámos a WebScrapingAPI para contornar todos esses obstáculos e facilitar ao máximo a extração de dados. Se quiser saber mais sobre este tópico, consulte o nosso artigo sobre os problemas mais comuns que os Web scrapers encontram.
Uma ferramenta, muitos casos de utilização
Todos concordamos que a recolha de dados da Web é uma excelente solução para o sector imobiliário, mas também pode ser utilizada para outros fins. Eis apenas alguns exemplos: monitorizar a sua concorrência, comparar preços de produtos e treinar algoritmos de aprendizagem automática.
Eu poderia continuar, mas isso já é um assunto totalmente novo. Não vou arrastar este artigo para sempre, por isso recomendo que veja estes sete casos de utilização de ferramentas de recolha de dados da Web.
Criar uma ferramenta de recolha de dados da Web no seu tempo livre parece bastante interessante, mas há muitas coisas a ter em conta, coisas que irão consumir uma quantidade considerável de tempo de desenvolvimento. Aqui pode encontrar uma discussão aprofundada sobre as ferramentas de raspagem da Web DIY vs. pré-fabricadas.
Se estivermos a falar de raspar algumas páginas Web, construir a ferramenta você mesmo pode ser uma solução rápida. Ainda assim, um trabalho profissional precisa de uma ferramenta profissional, idealmente uma API, WebScrapingAPI. Já mencionei o teste gratuito?
Notícias e actualizações
Mantenha-se atualizado com os mais recentes guias e notícias sobre raspagem da Web, subscrevendo a nossa newsletter.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artigos relacionados

Explore as complexidades da extração de dados de produtos da Amazon com nosso guia detalhado. De práticas recomendadas e ferramentas como a API Amazon Scraper a considerações legais, saiba como enfrentar desafios, contornar CAPTCHAs e extrair insights valiosos com eficiência.


Aprenda a extrair sites dinâmicos renderizados em JavaScript usando o Scrapy e o Splash. Desde a instalação até à escrita de um spider, à manipulação da paginação e à gestão das respostas do Splash, este guia abrangente oferece instruções passo a passo tanto para principiantes como para especialistas.


Aprenda a extrair tabelas JavaScript usando Python. Extrair dados de sites, armazená-los e manipulá-los usando Pandas. Melhorar a eficiência e a fiabilidade do processo de scraping.
