Volver al blog
Casos de uso
Robert MunceanuLast updated on Mar 31, 202610 min read

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

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

El mercado inmobiliario está en constante expansión y, con él, los agentes inmobiliarios y las empresas tratan de encontrar nuevas soluciones para predecir lo que 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 estar al tanto de todos ellos.

Entonces, ¿subirán los precios o bajarán? ¿Qué barrios tienen mayor demanda? ¿Hay propiedades que solo necesitan una reforma para que su valor se dispare? Estas son solo algunas de las preguntas que los agentes inmobiliarios se plantean con frecuencia.

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

Como todos sabemos a estas alturas, ¡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 extraer datos inmobiliarios de Internet y cómo hacerlo correctamente, sigamos juntos este recorrido. Hemos preparado tanto una solución «hazlo tú mismo» como una guía paso a paso sobre cómo WebScrapingAPI puede hacerlo.

Por qué deberías extraer datos inmobiliarios

El scraping web garantiza que la información extraída sobre el sector inmobiliario sea precisa, fiable y actualizada. De esta forma, se puede predecir si el mercado inmobiliario se disparará en breve o ver en qué rango de precios competirá tu propiedad.

Para las empresas, los datos web son valiosos porque permiten tomar mejores decisiones, fijar mejores precios y obtener un margen de beneficio más significativo. Sin embargo, la clave está en que cada dato debe ser lo más reciente posible, lo que convierte al web scraping en la solución obvia.

Los tipos de datos inmobiliarios que se extraen con mayor frecuencia son los siguientes:

  • Tipo de propiedad
  • Precio de venta
  • Ubicación
  • Superficie
  • Servicios
  • Precio de alquiler mensual
  • Plazas de aparcamiento
  • Agente inmobiliario

La información indicada anteriormente puede marcar la diferencia entre el éxito y el fracaso de una agencia inmobiliaria. Supone una gran diferencia en cuanto a comunicación, estrategia y eficiencia, pero la mayor ventaja es el grado de conocimiento que los agentes adquieren sobre sus propiedades y el mercado. A partir de ahí, solo es cuestión de encontrar al cliente adecuado.

Veamos algunos ejemplos que ilustran el valor del web scraping:

Agencias inmobiliarias

  • Toma de decisiones: Asumir riesgos forma parte del trabajo, pero eso no significa que debas hacerlo a ciegas. Investigar antes de comprar o vender algo es imprescindible para trabajar, y más información significa mejores acuerdos.
  • Predicción del mercado: Es crucial saber cuándo comprar y vender propiedades para obtener el mejor resultado y el más rentable. Algunos tipos de propiedades se disparan en popularidad mientras que otros pierden su atractivo. Algunas zonas prosperan mientras que otras se estancan. Saber lo que se avecina es la clave para la longevidad de un negocio.

La gente común

El web scraping no solo sirve para ayudar a las empresas. De hecho, parte de lo que lo hace tan popular es lo fácil que es de usar para una sola persona. Claro, necesitas algunos conocimientos de informática, pero hay un montón de tutoriales que te pueden ayudar. ¡Vaya, este es uno de ellos!

  • Compra y venta: Es necesario calcular con precisión 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, ¿no?
  • Invertir: Si te gusta invertir en propiedades, ya sea comprándolas a bajo precio para venderlas más tarde con beneficio o simplemente alquilándolas, es muy recomendable saber cuánto tardarás en recuperar la inversión y qué rentabilidad puedes esperar.

Bueno, ya basta de casos de uso. ¡Veamos algo de código!

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

Hay varias formas de extraer contenido de páginas web. En este artículo explicaremos dos métodos: uno en el que creamos nuestro propio rastreador web desde cero y otro en el que utilizamos una herramienta ya existente.

Primero, intentemos hacerlo nosotros mismos. El código nos resultará útil más adelante, cuando utilicemos una herramienta profesional de web scraping.  

Creación de un rastreador web para extraer datos inmobiliarios

He optado por escribir en Python debido a su popularidad en el scraping web. ¡Tenemos un tutorial general para extraer datos web en Python que deberías consultar!

Inspeccionar el código de la página web

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

Aparecerá una ventana llamada «Cuadro de inspección del navegador», como esta:

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

Encuentra los datos que quieres extraer

Podemos ver que todo lo que necesitamos extraer se encuentra dentro de la etiqueta <li> con la clase «component_property-card». Si profundizamos aún más en la etiqueta, observamos que los datos relativos al número de camas y baños se encuentran bajo el atributo «data-label» con los valores «pc-meta-beds» y «pc-beta-baths», respectivamente. Sabiendo esto, ¡podemos proceder a escribir nuestro código!

Prepara el espacio de trabajo

Como se ha mencionado anteriormente, utilizaremos Python como lenguaje de programación, por lo que debes descargarlo e instalarlo.

Puedes utilizar el IDE con el que te sientas más cómodo, pero te recomiendo usar PyCharm.

Una vez que hayas creado un nuevo proyecto, facilita tu trabajo utilizando estas bibliotecas:

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

Instalar estas bibliotecas en el proyecto es bastante sencillo. Solo tienes que ejecutar esta línea de comandos en el terminal del proyecto: python -m pip install selenium beautifulsoup4 pandas

Escribe el código

Empecemos importando las bibliotecas que hemos instalado anteriormente:

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

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

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

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

Declara las variables y establece la URL del sitio web del que se va a extraer la información.

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

Tenemos que extraer los datos de la página web, que se encuentran en las etiquetas anidadas, tal y como se ha explicado anteriormente. Busca las etiquetas con los atributos mencionados anteriormente y almacena los datos en las variables declaradas más arriba. Recuerda que solo queremos guardar propiedades con al menos dos dormitorios 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 la guardamos? Aquí es donde la biblioteca pandas nos resulta útil y nos ayuda a estructurar los datos en un archivo CSV para que podamos utilizarlos 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 estarán nuestros valiosos datos!

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

Uso de una API de web scraping

Para este escenario, utilizaremos WebScrapingAPI, por supuesto.

Crear una cuenta gratuita en WebScrapingAPI

Para utilizar WebScrapingAPI, debes crear una cuenta. No te preocupes, las primeras 5000 llamadas a la API son gratuitas y no es necesario compartir ningún dato personal, como la información de la tarjeta de crédito. Una vez que hayas creado tu cuenta y validado tu correo electrónico, podemos pasar al siguiente paso.

Clave API

Para utilizar WebScrapingAPI, tendrás que autenticarte mediante la clave API privada, que encontrarás en el panel de control de tu cuenta. Ten en cuenta que no debes compartir esta clave con nadie y, si sospechas que ha sido comprometida, siempre puedes restablecerla pulsando el botón «Restablecer clave API».

Modifica el código

¡Perfecto! Ahora que ya tienes la clave API, vamos a realizar los cambios necesarios.

Ya no utilizaremos un webdriver. En su lugar, la biblioteca «requests» enviará la solicitud 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 algunos parámetros para la solicitud: la URL del sitio web del que queremos extraer datos (realtor) y nuestra clave 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)

No olvides cambiar el contenido que analiza BeautifulSoup. En lugar del código fuente del Chromedriver, utilizaremos la respuesta recibida de la API.

content = response.text

A partir de este momento, puedes utilizar el mismo código del escenario anterior. Los datos seguirán almacenándose en un archivo CSV llamado «listings.csv».

¡Ya está todo listo!

Y eso es prácticamente todo; ya puedes ejecutar el código. WebScrapingAPI hará el trabajo y obtendrás los datos necesarios para encontrar la vivienda perfecta. Pero quizá te preguntes: «¿Cuál es la diferencia entre usar WebScrapingAPI y el scraper que hemos creado nosotros mismos?». Bueno, déjame explicártelo.

Hecho por uno mismo frente a ya preparado

Una de las ventajas más significativas de usar WebScrapingAPI son sus proxies. El servicio cuenta con un enorme conjunto de proxies rotativos que garantiza el anonimato de sus usuarios mientras navegan por la web.

Esta función también resulta útil cuando alguien desea extraer datos de un sitio web de forma masiva. Realizar múltiples solicitudes en un sitio web en un breve periodo de tiempo bloqueará sin duda tu IP, al interpretarlo como un intento de acoso o un bot con malas intenciones.

El uso de un conjunto de proxies rotativos hará que el sitio web piense que hay varios usuarios interactuando con él, por lo que pasarás desapercibido y podrás extraer datos todo el día.

Puedes encontrarte con muchos más obstáculos al extraer datos de la web, como los CAPTCHAs o la huella digital del navegador. Como es de esperar, hemos creado WebScrapingAPI para sortear todos esos obstáculos y facilitarte 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 a los que se enfrentan los extractores web.

Una herramienta, muchos casos de uso

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

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

Crear una herramienta de web scraping en tu tiempo libre suena muy bien, pero hay muchas cosas que tener en cuenta, cosas que consumirán una cantidad considerable de tiempo de desarrollo. Aquí puedes encontrar un análisis en profundidad sobre las herramientas de web scraping «hazlo tú mismo» frente a las ya preparadas.

Si hablamos de extraer datos de unas pocas páginas web, crear la herramienta tú mismo puede ser una solución rápida. Aun así, un trabajo profesional necesita una herramienta profesional, idealmente una API, WebScrapingAPI. ¿He mencionado la prueba gratuita?

Acerca del autor
Robert Munceanu, Desarrollador full-stack @ WebScrapingAPI
Robert MunceanuDesarrollador full-stack

Robert Munceanu es desarrollador full stack en WebScrapingAPI, donde colabora en todas las áreas del producto y ayuda a crear herramientas y funciones fiables que respaldan la plataforma.

Empieza a crear

¿Estás listo para ampliar tu recopilación de datos?

Únete a más de 2000 empresas que utilizan WebScrapingAPI para extraer datos de la web a escala empresarial sin ningún gasto de infraestructura.