Guía completa para la extracción de datos inmobiliarios de la Web

Robert Munceanu el 14 Jul 2021

blog-image

El mercado inmobiliario está en constante expansión y, con él, los agentes inmobiliarios y las empresas tratan de encontrar nuevas soluciones para saber qué les depara el futuro. Aunque el sector inmobiliario, en general, no cambia drásticamente de la noche a la mañana, se ve afectado por demasiados factores como para que una sola persona, o incluso una organización, pueda seguirle la pista.

¿Aumentarán o bajarán los precios? ¿Qué barrios están muy solicitados? ¿Hay propiedades que sólo necesitan una reforma para disparar su valor? Éstas son sólo algunas de las preguntas que se hacen los agentes inmobiliarios.

Para responder a estas preguntas, se necesitan muchos datos de investigación para comparar, y reunir manualmente tal cantidad de información sería como una búsqueda inútil. Aquí es donde resulta útil el web scraping, que recopila y estructura los datos tan rápido como se puede decir:

blog-image

Como todos sabemos, el web scraping es el motor de la extracción de datos. Así que, si quieres saber más sobre por qué alguien querría scrapear datos inmobiliarios de Internet y cómo hacerlo correctamente, continuemos nuestro viaje juntos. Hemos preparado tanto una solución DIY como una guía paso a paso sobre cómo WebScrapingAPI puede hacerlo.

Por qué debería raspar datos inmobiliarios

El rastreo de la web garantizará que la información extraída sobre el sector inmobiliario sea precisa, creíble y actualizada. De este modo, se puede predecir si el mercado inmobiliario se disparará en breve o ver en qué rango de precios competirá su propiedad.

Para las empresas, los datos web son valiosos porque permiten tomar mejores decisiones, mejorar los precios y obtener un margen de beneficios más significativo. Sin embargo, el problema es que cada bit de información debe ser lo más reciente posible, por lo que el web scraping es la solución obvia.

Los tipos de datos inmobiliarios que se extraen con más frecuencia son los siguientes:

  • Tipo de propiedad
  • Precio de venta
  • Ubicación
  • Talla
  • Servicios
  • Precio del alquiler mensual
  • Plazas de aparcamiento
  • Agente de la propiedad

La información mencionada anteriormente puede hacer o deshacer una agencia inmobiliaria. Supone una gran diferencia en cuanto a comunicación, estrategia y eficacia, pero la mayor ventaja es lo bien que los agentes llegan a conocer sus propiedades y el mercado. Después, sólo es cuestión de encontrar al cliente adecuado.

Veamos algunas situaciones que ilustran el valor del web scraping:

Agencias inmobiliarias

  • Toma de decisiones: Asumir riesgos forma parte del trabajo, pero eso no significa que haya que hacerlo a ciegas. Investigar antes de comprar o vender algo es obligatorio para trabajar, y más información significa mejores ofertas.
  • Predecir el mercado: Es crucial saber cuándo comprar y vender propiedades para obtener el mejor y más rentable resultado. Algunos tipos de propiedades se disparan en popularidad mientras que otros pierden su brillo. Algunas zonas florecen mientras que otras se estancan. Saber lo que está a la vuelta de la esquina es la clave de la longevidad como negocio.

Gente normal

El web scraping no sólo ayuda a las empresas. En realidad, parte de lo que lo hace tan popular es lo fácil que resulta utilizarlo para una sola persona. Claro que se necesitan conocimientos de informática, pero hay muchos tutoriales de ayuda. Este es uno de ellos.

  • Comprar y vender: Hay que deducir con exactitud el valor de la propiedad antes de comprarla o venderla. Sería una pena vender la casa de tu infancia y verla una semana después en una web inmobiliaria al doble de precio, ¿verdad?
  • Invertir: Si te gusta invertir en propiedades, ya sea comprando a un precio pequeño para venderlo más tarde y obtener beneficios o simplemente alquilar la propiedad, es muy recomendable saber rápido que vas a llegar al punto de equilibrio y qué rendimientos debes esperar.

Vale, ya está bien de casos de uso. Veamos algo de código.

Para empezar, supongamos que estamos buscando una casa nueva en Nueva York. Queremos comprar una vivienda con al menos dos dormitorios y, por supuesto, un cuarto de baño. Así que empezaremos nuestra búsqueda en Realtor, extraeremos datos de allí y los compararemos para encontrar la mejor oferta.

Existen varias formas de extraer contenido de páginas web. Este artículo explicará dos métodos: uno en el que creamos nuestro raspador web desde cero y otro en el que utilizamos una herramienta ya existente.

En primer lugar, vamos a intentar hacerlo nosotros mismos. El código nos será útil más adelante, cuando utilicemos una herramienta profesional de web scraping.  

Creación de un raspador web para extraer datos inmobiliarios

Elegí escribir en Python debido a lo popular que es en el web scraping. ¡Tenemos un tutorial de propósito general para la extracción de datos web en Python que usted debe comprobar hacia fuera!

Inspeccionar el código del sitio web

Los datos que necesitamos extraer se encuentran en las etiquetas anidadas de dicha página web. Antes de empezar a raspar, tenemos que encontrarlos. Para ello, basta con hacer clic con el botón derecho en el elemento y seleccionar "Inspeccionar".

blog-image

Aparecerá una ventana como ésta:

blog-image

En esta ventana, navegaremos para encontrar las etiquetas y clases bajo las que se encuentran nuestros datos esenciales. Al principio puede parecer un poco intimidante, pero con la experiencia se hace más fácil.

Busque los datos que desea extraer

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 el espacio de trabajo

Como ya hemos mencionado, utilizaremos Python como lenguaje de programación, por lo que es necesario descargarlo e instalarlo.

Puedes usar cualquier IDE con el que te sientas cómodo, pero yo recomiendo usar PyCharm.

Cuando hayas creado un nuevo proyecto, facilita tu trabajo utilizando estas bibliotecas:

  • Selenium: Utilizado para pruebas web y automatización de actividades del navegador.
  • BeautifulSoup: Utilizado para analizar documentos HTML y XML.
  • Pandas: Utilizado para la manipulación de datos. Los datos extraídos se almacenarán en un formato estructurado.

Instalarlos dentro del proyecto es bastante sencillo. Sólo tiene que utilizar esta línea de comandos en el terminal del proyecto: python -m pip install selenium beautifulsoup4 pandas

Escriba el código

Empecemos por importar las bibliotecas que hemos instalado antes:

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

Para extraer los datos del sitio web, tenemos que cargarlos configurando el webdriver para que utilice el navegador Chrome. Para ello, simplemente tenemos que especificar la ruta donde se encuentra el chromedriver. No olvides añadir al final el nombre del ejecutable, ¡no sólo su ubicación!

driver = webdriver.Chrome('su/ruta/aquí/chromedriver')

Además del número de camas y baños, también podemos extraer la dirección, el precio y, por qué no, el tamaño del inmueble. Cuanta más información tengamos, más fácil será decidirnos por una nueva vivienda.

Declare las variables y establezca la URL del sitio web que se va a raspar.

precios = []
camas = []
baños = []
tamaños = []
direcciones = []
driver.get('https://www.realtor.com/realestateandhomes-search/New-York_NY')

Tenemos que extraer los datos de la página web, que se encuentra en las etiquetas anidadas como se explicó anteriormente. Busque las etiquetas con los atributos mencionados anteriormente y guarde los datos en las variables declaradas anteriormente. Recuerde que sólo queremos guardar propiedades con al menos dos camas y un baño.

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')

¡Genial! Tenemos toda la información que necesitamos, pero ¿dónde debemos almacenarla? Aquí es donde la biblioteca pandas resulta útil y nos ayuda a estructurar los datos en un archivo csv para que podamos utilizarlo en el futuro.

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

Si ejecutamos el código, se creará un archivo llamado 'listings.csv', y en él, ¡nuestros preciados datos!

¡Lo hemos conseguido! ¡Hemos creado nuestra propia herramienta de web scraping! Ahora vamos a ponernos manos a la obra y ver qué pasos tenemos que seguir y qué líneas de código tenemos que modificar para utilizar una herramienta de scraping.

Utilizar una API de web scraping

Para este escenario, utilizaremos WebScrapingAPI, por supuesto.

Crear una cuenta WebScrapingAPI gratuita

Para utilizar WebScrapingAPI, tienes que crear una cuenta. No te preocupes, las primeras 5000 llamadas a la API son gratuitas y no necesitas compartir ningún dato personal, como la información de tu tarjeta de crédito. Después de crear tu cuenta y validar tu correo electrónico, podemos pasar al siguiente paso.

Clave API

blog-image

Para utilizar WebScrapingAPI, deberá autenticarse mediante la clave privada de la API, que encontrará en el panel de control de su cuenta. Ten en cuenta que no debes compartir esta clave con nadie, y si sospechas que ha sido comprometida, siempre puedes restablecer la clave pulsando el botón "Restablecer clave de API".

Modificar el código

Perfecto. Ahora que tienes la clave API, vamos a hacer los cambios necesarios.

Ya no usaremos un webdriver. En su lugar, la librería 'requests' enviará la petición a WebScrapingAPI y recuperará el código HTML del sitio web como respuesta.

import requests
from bs4 import BeautifulSoup
import pandas as pd

A continuación, tenemos que preparar unos cuantos parámetros para la petición: la url de la web de la que queremos extraer datos (inmobiliaria) y nuestra API Key.

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)

No olvides cambiar el contenido que beautifulsoup está parseando. En lugar de la fuente del chromedriver, usaremos la respuesta recibida de la API.

contenido = respuesta.texto

A partir de este punto, puede utilizar el mismo código del escenario anterior. Los datos seguirán almacenados en un archivo CVS llamado 'listings.csv'.

¡Ya está!

Y eso es todo; puedes ejecutar el código. WebScrapingAPI hará el trabajo, y obtendrás los datos necesarios para encontrar la casa perfecta. Pero te preguntarás: "¿Cuál es la diferencia entre usar WebScrapingAPI y el scraper que construimos nosotros mismos?". Bueno, permítame que se lo explique.

Bricolaje frente a productos prefabricados

Una de las ventajas más significativas de utilizar WebScrapingAPI son sus proxies. El servicio cuenta con un enorme grupo de proxies rotatorios que garantizan el anonimato de sus usuarios mientras navegan por la web.

Esta función también es útil cuando alguien desea hacer scraping de un sitio web en masa. Hacer múltiples peticiones en un sitio web en poco tiempo seguramente bloqueará tu IP, pensando que se trata de un intento de pena o de un bot con malas intenciones.

El uso de un proxy rotativo hará que el sitio web piense que varios usuarios están interactuando con él, por lo que pasará desapercibido y podrá hacer scraping durante todo el día.

Hay muchos más obstáculos que pueden surgir cuando se rastrea la web, como los CAPTCHA o las huellas dactilares del navegador. Como era de esperar, hemos creado WebScrapingAPI para evitar todos estos obstáculos y facilitar al máximo la extracción de datos. Si quieres saber más sobre este tema, echa un vistazo a nuestro artículo sobre los problemas más comunes con los que se encuentran los web scrapers.

Una herramienta para muchos usos

Todos estamos de acuerdo en que el scraping de la web es una solución excelente para el sector inmobiliario, pero también puedes utilizarlo para otros fines. He aquí algunos ejemplos: monitorizar a la competencia, comparar precios de productos y entrenar algoritmos de aprendizaje automático.

Podría seguir, pero eso ya es otro tema. No voy a alargar este artículo eternamente, así que te recomiendo que eches un vistazo a estos siete casos de uso de las herramientas de web scraping.

Crear una herramienta de web scraping en tu tiempo libre suena bastante bien, pero hay muchas cosas a tener en cuenta, cosas que quemarán una cantidad considerable de tiempo de desarrollo. Aquí puedes encontrar un debate en profundidad sobre las herramientas de raspado web DIY frente a las prefabricadas.

Si estamos hablando de scrapear unas pocas páginas web, construir la herramienta uno mismo puede ser una solución rápida. Aún así, un trabajo profesional necesita una herramienta profesional, idealmente una API, WebScrapingAPI. ¿He mencionado la prueba gratuita?

Noticias y actualidad

Manténgase al día de las últimas guías y noticias sobre raspado web suscribiéndose a nuestro boletín.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artículos relacionados

miniatura
GuíasCómo raspar datos de productos de Amazon: Guía completa de mejores prácticas y herramientas

Explore las complejidades del scraping de datos de productos de Amazon con nuestra guía en profundidad. Desde las mejores prácticas y herramientas como Amazon Scraper API hasta las consideraciones legales, aprenda a superar los desafíos, eludir los CAPTCHA y extraer información valiosa de forma eficiente.

Suciu Dan
avatar de autor
Suciu Dan
15 minutos de lectura
miniatura
GuíasTutorial de Scrapy Splash: Dominar el arte del scraping de sitios web renderizados en JavaScript con Scrapy y Splash

Aprenda a scrapear sitios web dinámicos con JavaScript utilizando Scrapy y Splash. Desde la instalación hasta la escritura de una araña, el manejo de la paginación y la gestión de las respuestas de Splash, esta completa guía ofrece instrucciones paso a paso tanto para principiantes como para expertos.

Ștefan Răcila
avatar de autor
Ștefan Răcila
6 min leer
miniatura
GuíasDescubra cómo raspar tablas JavaScript con Python

Aprende a scrapear tablas JavaScript usando Python. Extraer datos de sitios web, almacenarlos y manipularlos usando Pandas. Mejorar la eficiencia y fiabilidad del proceso de scraping.

Andrei Ogiolan
avatar de autor
Andrei Ogiolan
7 min leer