Cómo extraer datos de los anuncios de AirBnB
Robert Sfichi el 26 mayo 2021

¿Se ha encontrado alguna vez en la situación de intentar descubrir el lugar perfecto para pasar las vacaciones? O quizá sólo quiera averiguar cómo compite su anuncio con el de sus vecinos. En cualquier caso, ¿por qué no utilizar el poder del web scraping para ello?
Un raspador web es un software que le ayuda a automatizar el tedioso proceso de recopilar datos útiles de sitios web de terceros. La mayoría de los servicios en línea ofrecen a los desarrolladores acceso a una API para leer fácilmente la información de su sitio web. Por desgracia, Airbnb no es uno de ellos. Aquí es donde entran en juego los raspadores web.
¿Por qué rasparía alguien los datos de Airbnb?
Airbnb es una plataforma que ofrece a la gente la oportunidad de alquilar sus propiedades utilizando sólo una conexión a Internet. Fue fundada en 2008 por Brian Chesky, Nathan Blecharczyk y Joe Gebbia y ha cosechado un éxito masivo incluso durante la pandemia.
Todo el mundo puede encontrar los anuncios en la plataforma simplemente accediendo a Airbnb y buscando un lugar, pero no hay una forma fácil de encontrar un conjunto de datos significativo con la siguiente información:
- ¿Cuántos listados hay en una ciudad?
- ¿Cuál es su precio?
- ¿Qué aspecto tienen?
- ¿Cómo se clasifican?
Por supuesto, usted tiene sus propias razones para querer obtener esta información y estoy seguro de que podemos ayudarle con esto.
Empecemos.
Extracción de datos con una API de web scraping
Para poder extraer todos los datos necesarios, asegúrate de seguir los siguientes pasos.
1. Inspección del código fuente
Compruebe los elementos que le interesa extraer del sitio web de Airbnb. Haciendo clic con el botón derecho del ratón en cualquier parte de la página y seleccionando la opción "Inspeccionar", accederá a las Herramientas para desarrolladores.
Digamos que queremos obtener el precio, la imagen, el tipo y la calificación de los lugares que vamos a raspar.
En primer lugar, vamos a encontrar el elemento común en el DOM. Parece que _gigle7 es lo que estamos buscando.

2. Elegir un rascador web
Para obtener los mejores resultados, recomendamos utilizar nuestro servicio, WebScrapingAPI, ya que es en el que basaremos nuestro tutorial. Puedes probarlo gratuitamente accediendo a este enlace. Crea una cuenta y vuelve a esta página cuando hayas terminado.
Una vez que hayas iniciado sesión, ve a la página del panel de control. Aquí encontrarás tu clave de acceso privada a la API, que utilizaremos para realizar las solicitudes, el patio de recreo de la API, donde podrás probar nuestro producto, y la documentación.

3. Puesta en marcha del proyecto
Después de haber creado una carpeta para el proyecto, ejecute los siguientes comandos:
npm init -y
npm install got jsdom
Para realizar las peticiones vamos a instalar el módulo got, y para nuestras necesidades de parseo HTML, utilizaremos el paquete jsdom.
Crea un nuevo archivo llamado "index.js" y ábrelo.
4. Realización de la solicitud
Establezcamos los parámetros y hagamos la petición y parseemos el HTML. Escribe las siguientes líneas en el archivo creado anteriormente:
const {JSDOM} = require("jsdom")
const got = require("got")
(async () => {
const params = {
api_key: "YOUR_API_KEY",
url: "https://www.airbnb.com/s/Berlin/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_dates%5B%5D=april&flexible_trip_dates%5B%5D=may&flexible_trip_lengths%5B%5D=weekend_trip&date_picker_type=calendar&source=structured_search_input_header&search_type=filter_change&place_id=ChIJAVkDPzdOqEcRcDteW0YgIQQ&checkin=2021-04-01&checkout=2021-04-08"
}
const response = await got('https://api.webscrapingapi.com/v1', {searchParams: params})
const {document} = new JSDOM(response.body).window
const places = document.querySelectorAll('._gig1e7')
})()
Como hemos dicho anteriormente, toda la información relevante se encuentra bajo el elemento _gigle7, así que vamos a buscar todos los elementos que estén asignados a la clase _gigle7. Puedes entrar en la pantalla añadiendo una acción console.log() justo después de la línea donde definimos los lugares constantemente.
console.log(lugares)
5. Obtención de los datos en formato JSON
A partir de aquí, profundizaremos para obtener los elementos específicos que contienen la información sobre el precio, el tipo de imagen y la valoración.
Después de las líneas de código presentadas anteriormente, copie lo siguiente:
const resultados = []
places.forEach(place => {
if (place) {
const precio = place.querySelector('._ls0e43')
if (precio) place.precio = precio.querySelector('._krjbj').innerHTML
const imagen = place.querySelector('._91slf2a')
if (imagen) place.image = image.src
const type = place.querySelector('._b14dlit')
if (type) place.type = type.innerHTML
const rating = place.querySelector('._10fy1f8')
if (rating) place.rating = rating.innerHTML
results.push(place)
}
})
console.log(results)
Como puedes ver, para cada anuncio que obtenemos en la primera página, obtenemos el elemento de la etiqueta de precio, la ubicación de la fuente de la imagen, el tipo de anuncio y la valoración. Al final, tendremos un array de objetos, y cada uno de ellos contendrá cada elemento de esta lista.
Ahora que hemos escrito todo el código necesario para obtener la información de Airbnb, el archivo index.js debería tener este aspecto:
const {JSDOM} = require("jsdom");
const got = require("got");
(async () => {
const params = {
api_key: "YOUR_API_KEY",
url: "https://www.airbnb.com/s/Berlin/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_dates%5B%5D=april&flexible_trip_dates%5B%5D=may&flexible_trip_lengths%5B%5D=weekend_trip&date_picker_type=calendar&source=structured_search_input_header&search_type=filter_change&place_id=ChIJAVkDPzdOqEcRcDteW0YgIQQ&checkin=2021-04-01&checkout=2021-04-08"
}
const response = await got('https://api.webscrapingapi.com/v1', {searchParams: params})
const {document} = new JSDOM(response.body).window
const places = document.querySelectorAll('._gig1e7')
const results = []
places.forEach(place => {
if (place) {
const price = place.querySelector('._ls0e43')
if (price) place.price = price.querySelector('._krjbj').innerHTML
const image = place.querySelector('._91slf2a')
if (image) place.image = image.src
const type = place.querySelector('._b14dlit')
if (type) place.type = type.innerHTML
const rating = place.querySelector('._10fy1f8')
if (rating) place.rating = rating.innerHTML
results.push(place)
}
})
console.log(results)
})()
Como puede ver, raspar datos de Airbnb utilizando WebScrapingAPI es bastante sencillo.
- Realiza una petición a WebScrapingAPI utilizando los parámetros necesarios: la clave API y la URL de la que necesitamos obtener los datos.
- Carga el DOM utilizando JSDOM.
- Seleccione todos los listados buscando la clase específica.
- Para cada anuncio, obtenga el precio, la imagen, el tipo de anuncio y la valoración.
- Añade cada lugar a un nuevo array llamado resultados.
- Registre en la pantalla la nueva matriz de resultados creada.
La respuesta debería ser algo parecido a esto:
[
HTMLDivElement {
price: '$47 per night, originally $67',
image: 'https://a0.muscache.com/im/pictures/miso/Hosting-46812239/original/c56d6bb5-3c2f-4374-ac01-ca84a50d31cc.jpeg?im_w=720',
type: 'Room in serviced apartment in Friedrichshain',
rating: '4.73'
},
HTMLDivElement {
price: '$82 per night, originally $109',
image: 'https://a0.muscache.com/im/pictures/miso/Hosting-45475252/original/f6bd7cc6-f72a-43ef-943e-deba27f8253d.jpeg?im_w=720',
type: 'Entire serviced apartment in Mitte',
rating: '4.80'
},
HTMLDivElement {
price: '$97 per night, originally $113',
image: 'https://a0.muscache.com/im/pictures/92966859/7deb381e_original.jpg?im_w=720',
type: 'Entire apartment in Mitte',
rating: '4.92'
},
HTMLDivElement {
price: '$99 per night, originally $131',
image: 'https://a0.muscache.com/im/pictures/f1b953ca-5e8a-4fcd-a224-231e6a92e643.jpg?im_w=720',
type: 'Entire apartment in Prenzlauer Berg',
rating: '4.90'
},
HTMLDivElement {
price: '$56 per night, originally $61',
image: 'https://a0.muscache.com/im/pictures/bb0813a6-e9fe-4f0a-81a8-161440085317.jpg?im_w=720',
type: 'Entire apartment in Tiergarten',
rating: '4.67'
},
...
]
Una de las limitaciones a las que nos enfrentamos actualmente es que sólo raspamos la información de una página de nuestra búsqueda. Esto se puede solucionar utilizando algún tipo de navegador headless, como Puppeteer, o una herramienta de automatización de navegadores como Selenium. Esto nos ayudará a hacer la mayoría de las cosas que podemos hacer manualmente en un navegador web, como completar un formulario o hacer clic en un botón.
Le animamos a consultar nuestra Guía definitiva sobre Web Scraping con JavaScript y Node.Js si desea obtener más información sobre estas tecnologías.
El poder del web scraping
Como puedes ver, hemos conseguido construir un raspador web básico en sólo un par de minutos. A partir de aquí, tu imaginación es el límite. Si es lo suficientemente ambicioso, puede incluso utilizar los datos recopilados para visualizar la distribución y concentración de las propiedades en un mapa. Airbnb le proporciona toda la información necesaria en la cabecera de cualquier página de anuncios.
Como puedes ver, el web scraping puede ser una de las formas más divertidas de pasar el tiempo como desarrollador de software. Puedes obtener fácilmente todos los datos que necesitas para crear una nueva aplicación para un nicho específico o simplemente para entrenar tus habilidades. Si tienes algún problema con el proceso, no dudes en pedir ayuda en la sección de comentarios y ¡estaremos encantados de ayudarte!
Si este artículo no le ha ayudado a entender completamente las capacidades del web scraping puede echar un vistazo a otro ejemplo de cómo las empresas pueden construir un web scraper paso a paso.
Gracias por su tiempo. ¡Feliz raspado!
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

Explore el poder transformador del web scraping en el sector financiero. Desde datos de productos hasta análisis de opiniones, esta guía ofrece información sobre los distintos tipos de datos web disponibles para tomar decisiones de inversión.


Sumérjase en el papel transformador de los datos financieros en la toma de decisiones empresariales. Comprender los datos financieros tradicionales y la importancia emergente de los datos alternativos.


Saludos, Si estás interesado en aprender Web Scraping en 2023 y buscas los mejores cursos online para realizar, has llegado al sitio adecuado.
