Recopilar anuncios de un solo portal es un problema de scraping, y uno bien comprendido. Recopilarlos de treinta portales en una docena de países y presentar el resultado como un único inventario consultable es un trabajo completamente distinto, y casi ninguna de las dificultades está en la obtención de los datos.
Está en el hecho de que dos portales que describen el mismo apartamento discreparán sobre su tamaño, su número de habitaciones, su precio e incluso qué tipo de propiedad es, y todos tendrán razón según su propia convención local.
Si todavía estás configurando la recopilación en sí, proxies para datos inmobiliarios cubre ese terreno. Esta guía trata sobre lo que ocurre después de que llegan los datos.
Los campos que no significan lo que dicen
Cinco categorías causan la mayoría de los fallos de agregación entre portales.
Superficie. Metros cuadrados, pies cuadrados y, en algunos mercados, unidades locales. Peor aún, la base de medición difiere: interior bruto, interior neto y, en varios países, un estándar de medición definido legalmente que excluye o descuenta partes de una propiedad. Convertir unidades es trivial; conciliar bases no lo es, y una conversión directa mezcla ambas de forma silenciosa.
Número de habitaciones. En gran parte de la Europa continental, la cifra principal cuenta habitaciones incluyendo salones en lugar de dormitorios. Un “3 pièces” y un “3 bedroom” no son la misma propiedad. Almacenar ambos en una sola columna bedrooms produce un inventario que está equivocado de una manera que solo se manifiesta cuando alguien compara mercados.
Semántica del precio. Precio de venta, precio orientativo, “ofertas superiores a”, reserva de subasta, precio a consultar y, en mercados de alquiler, si la cifra incluye gastos de comunidad, suministros o impuestos locales. Son cantidades distintas que llevan el mismo símbolo de moneda.
Régimen de tenencia y tipo de propiedad. Pleno dominio, arrendamiento a largo plazo con un plazo restante, acuerdos de tipo “strata” o condominio, propiedad cooperativa. Un arrendamiento con un plazo restante corto es un activo materialmente distinto de un pleno dominio al mismo precio.
Taxonomías de tipo de propiedad. Cada portal tiene la suya propia, y no se corresponden de forma limpia entre sí. Decidir si una maisonette, un dúplex y un apartamento con escaleras interiores son una categoría o tres es una decisión de producto que hay que tomar una vez y aplicar en todas partes.
El principio que mantiene esto manejable: almacenar los valores originales de la fuente tal cual, junto a tus valores normalizados, siempre. Cuando más adelante descubras que la base de superficie de un portal difiere de lo que asumías, los campos brutos te permiten volver a derivar los datos. Sin ellos tienes que volver a recopilar, y los datos históricos simplemente se pierden.
Construye el modelo canónico antes del segundo portal
El orden importa. Los equipos que integran el portal uno, y luego añaden el portal dos a su esquema, terminan con un modelo canónico que en realidad es el modelo del portal uno con otro nombre, y cada integración posterior lucha contra él.
Un registro canónico viable separa tres capas:
| Capa | Contenido | Por qué separarla |
|---|---|---|
| Bruta | Los campos de la fuente exactamente como se publicaron, más los metadatos de la obtención | Permite volver a derivar cuando cambian tus suposiciones |
| Normalizada | Tus unidades, tu taxonomía, tu semántica de precio, con la conversión registrada | Lo que consulta el producto |
| Derivada | Precio por unidad de superficie, índices calculados, puntuaciones | Recalculable, nunca la fuente de verdad |
Cada campo normalizado debe llevar una nota de qué regla lo produjo. Cuando un cliente pregunte por qué una propiedad muestra 68 metros cuadrados en tu plataforma y 73 en el portal, la respuesta debería ser una consulta y no una investigación.
Divisas, y nunca almacenar solo el valor convertido
Para inventarios multipaís, almacena el importe original y su código de divisa tal como se publicó, más el tipo de cambio que aplicaste y la fecha de ese tipo.
Almacenar solo una cifra convertida destruye información de forma irreversible. Los tipos cambian, se emiten correcciones, y un cliente que ve un anuncio histórico quiere el precio que se pidió, no ese precio reexpresado al tipo de hoy. Convierte en el momento de la consulta a partir del valor original almacenado, o almacena la conversión con su tipo fechado para que pueda auditarse y rehacerse.
Conciliar la misma propiedad de varios portales
La misma propiedad aparece habitualmente en varios portales, publicada por diferentes agentes, con fotografías distintas, descripciones distintas y a veces precios distintos. La resolución de identidad es lo que convierte eso en un único registro, y se trata en profundidad en construir un feed de datos del mercado inmobiliario en tiempo real, ya que el mismo mecanismo impulsa el recuento de inventario allí.
Lo específico de la agregación es lo que haces una vez agrupados los duplicados: decidir qué valor prevalece.
Define una precedencia de fuente por campo en lugar de por portal. Un portal puede tener las cifras de superficie más fiables mientras que otro tiene mejores fotografías y un tercero actualiza los precios más rápido. Una clasificación global única desperdicia eso.
Después, gestiona el desacuerdo de forma explícita. Cuando los anuncios agrupados discrepan en el precio más allá de una tolerancia, eso es una señal más que un error: puede significar un cambio de precio que un agente no ha reflejado, o una agrupación incorrecta. Márcalo, muestra el rango y mantén las alternativas enlazadas. Elegir una en silencio y descartar el resto es cómo un agregador pierde la confianza.
La disciplina general de emparejamiento, incluida la medición y publicación de tu tasa de coincidencia, es la misma que se describe en surtido de la competencia y huecos de catálogo.
La cobertura es nacional, no global
No existe un mercado inmobiliario global ni un conjunto global de portales. Cada país tiene sus propios portales líderes, su propio comportamiento de agentes y sus propias convenciones sobre qué se publica públicamente. En algunos mercados, una gran parte de las transacciones nunca aparece en un portal público.
Así que trata un inventario global como una unión de paneles nacionales, cada uno con su propio conjunto de portales definido, y registra la cobertura por mercado en lugar de en conjunto. Una única cifra principal agregada por países oculta el mercado donde tienes un portal y el mercado donde tienes seis.
Dos reglas prácticas. No compares inventario absoluto entre mercados a menos que la cobertura sea comparable, porque estarás midiendo tu propio panel. Y allí donde existan feeds con licencia para un mercado, opta por la licencia: la cobertura y la calidad de los campos suelen ser mucho mejores que la recopilación pública, y la posición legal es más sencilla.
La capa de recopilación
Los portales localizan mucho. Lo que ves, la divisa mostrada, el idioma, a veces el propio sitio, depende de dónde parece originarse la solicitud. Un agregador multipaís que recopila desde un único punto de vista recibirá en silencio la vista de un país sobre varios mercados.
Con la puerta de enlace de Shifter, el mercado y la sesión se incluyen en las credenciales frente a p.shifter.io:443:
customer-USERNAME-country-fr-sid-listings-fr-12-ttl-600:PASSWORD
country-fr usa el código ISO alfa-2, sid-listings-fr-12 mantiene una única salida a lo largo de una búsqueda completa incluyendo la paginación para que un conjunto de resultados sea internamente coherente, y ttl-600 conserva esa dirección durante diez minutos. Sin sid, la puerta de enlace rota por solicitud, lo cual es correcto para consultas independientes e incorrecto para una búsqueda paginada.
Mantén las señales de localización coherentes con la salida, ya que una discrepancia cambia lo que devuelven algunos portales, y mantén las tasas de solicitud ordinarias con un retroceso real, como en limitación de tasa y regulación de solicitudes. Registra el éxito de recopilación por portal y por mercado junto con los anuncios, porque un portal que empieza a devolver silenciosamente menos resultados se parece exactamente a un mercado con menos oferta.
La completitud de los campos es una métrica de calidad, no un detalle
Los portales difieren enormemente en lo completos que son al rellenar campos opcionales. Un agregador que trata un campo ausente como inexistente en lugar de no publicado informará, por ejemplo, de que un mercado apenas tiene propiedades con calificación energética cuando, en realidad, un portal simplemente no expone ese dato.
Puntúa la completitud por portal y por campo, publícala internamente y úsala al elegir la precedencia de fuente. También te indica dónde un feed con licencia mejoraría realmente el producto en lugar de simplemente costar dinero.
Preguntas frecuentes
¿Debería normalizar en la ingesta o en el momento de la consulta?
Normaliza en la ingesta y conserva los campos brutos. La normalización en el momento de la consulta es más lenta y complica la indexación, pero sin los valores brutos no puedes corregir una regla defectuosa de forma retroactiva.
¿Cómo gestiono los portales que publican habitaciones en lugar de dormitorios?
Almacena ambos conceptos como campos separados y rellena lo que la fuente proporcione. No infieras dormitorios a partir de un número de habitaciones, y no dejes que un filtro de producto consulte un campo que solo está poblado en algunos mercados.
¿Es realista una única taxonomía canónica de tipo de propiedad entre países?
Una superficial sí lo es. Mantén el nivel superior pequeño y portable, y pon la especificidad local en un campo secundario en lugar de forzarla en la taxonomía principal.
¿Qué es lo de mayor valor que hay que corregir primero?
La base de superficie y la semántica de precio. Afectan a cada métrica derivada, y los errores en ellas son invisibles hasta que alguien compara dos mercados.
En resumen
La agregación entre portales es un problema de normalización disfrazado de problema de scraping. La obtención de datos es la parte que ya está resuelta.
Construye el modelo canónico antes de la segunda integración, conserva los valores brutos de la fuente para siempre, almacena la divisa original con un tipo fechado, define la precedencia de fuente por campo en lugar de por portal, trata el desacuerdo como una señal más que como un error, y registra la cobertura por mercado porque no existe un panel global. La vista de producto está en la página de recopilación de datos a gran escala, con las tarifas en la página de precios.