Skip to content
Advertisement

Separate list obtained with selenium Python

I am developing a script to scrape a page of hotels.com with selenium

import time
import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import pandas as pd
import csv 

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

driver.get('https://es.hoteles.com/ho227810/secrets-lanzarote-resort-spa-adults-only-18-yaiza-espana/')

time.sleep(3)

try:
    cookies = driver.find_element(By.CLASS_NAME, 'osano-cm-button--type_accept')
    cookies.click()
    time.sleep(2)
except:
    pass

try:
    tamano_hotel = driver.find_elements(By.XPATH, '//*[@id="Amenities"]/div/div[1]/div/div[2]')
    hotel=[]
    for iterarhotel in tamano_hotel:
        hotel.append(iterarhotel.text)
    print(hotel)
    time.sleep(2)        
except:
    print("Nothing")

It extracts it as a list

['Tamaño del hoteln331 habitacionesnCuenta con 8 pisosnEntrada y salidanHorario del registro de entrada: de 15:00 a 0:00nEdad mínima para efectuar el registro de entrada: 18nSe puede efectuar el registro de salida hasta las 12:00nRestricciones relacionadas con tu viajenConsulta las restricciones por el COVID-19.nInstrucciones especiales de entradanEl personal de recepción estará esperando a los huéspedes a su llegada.nPara obtener más información, ponte en contacto con el alojamiento a través de los datos que aparecen en la confirmación de la reserva.nLos restaurantes del establecimiento abren en función de la temporada.nDocumentación para el registro de entradanEs obligatorio presentar una tarjeta de crédito o de débito, o dejar un depósito en efectivo, para posibles cargos adicionales.nPueden pedirte un documento de identidad válido.nLa edad mínima para alojarse en este alojamiento es de 18 añosnLa edad mínima para realizar el registro de entrada es de 18 años.nMenoresnCunas no disponiblesnMascotasnSe admiten mascotas (solo perros y gatos, 1 por habitación hasta 10 kg)*nCon restricciones*nInternetnConexión wifi gratis en las zonas comunesnConexión wifi gratis en las habitacionesnAparcamientonAparcamiento sin asistencia gratuito en las instalacionesnAparcamiento para coches accesible en silla de ruedas en las instalacionesnTrasladosnTraslado desde/hasta el aeropuerto*nInformación adicionalnAlojamiento para no fumadoresnSolo para adultos']

I am trying to scrape the Amenities part but I get the list all together, how could I separate it in a way that it would be separated like this?

Tamaño del hotel: 331 habitaciones, Cuenta con 8 pisos

Entrada y salida: Horario del registro de entrada: de 15:00 a 0:00, Edad mínima para efectuar el registro de entrada: 18, Se puede efectuar el registro de salida hasta las 12:00

Restricciones relacionadas con tu viaje: Consulta las restricciones por el COVID-19.

etc…

Advertisement

Answer

Create an empty dictionary object and add the key as header and value and li elements.

I have changed the locator as well.

try:
    tamano_hotel = driver.find_elements(By.CSS_SELECTOR, 'section#Amenities div.uitk-layout-columns-item')
    hotel=[]
    dictdetails={}
    for iterarhotel in tamano_hotel:
        dictdetails[iterarhotel.find_element(By.XPATH, ".//h3").text]=",".join([item.text for item in iterarhotel.find_elements(By.XPATH, ".//ul//li")])
        hotel.append(dictdetails)
    print(hotel)
    time.sleep(2)        
except:
    print("Nothing")

Console output:

[{'Tamaño del hotel': '331 habitaciones,Cuenta con 8 pisos', 'Entrada y salida': 'Horario del registro de entrada: de 15:00 a 0:00,Edad mínima para efectuar el registro de entrada: 18,Se puede efectuar el registro de salida hasta las 12:00', 'Restricciones relacionadas con tu viaje': 'Consulta las restricciones por el COVID-19.', 'Instrucciones especiales de entrada': 'El personal de recepción estará esperando a los huéspedes a su llegada.,Para obtener más información, ponte en contacto con el alojamiento a través de los datos que aparecen en la confirmación de la reserva.,Los restaurantes del establecimiento abren en función de la temporada.', 'Documentación para el registro de entrada': 'Es obligatorio presentar una tarjeta de crédito o de débito, o dejar un depósito en efectivo, para posibles cargos adicionales.,Pueden pedirte un documento de identidad válido.,La edad mínima para alojarse en este alojamiento es de 18 años,La edad mínima para realizar el registro de entrada es de 18 años.', 'Menores': 'Cunas no disponibles', 'Mascotas': 'Se admiten mascotas (solo perros y gatos, 1 por habitación hasta 10 kg)*,Con restricciones*', 'Internet': 'Conexión wifi gratis en las zonas comunes,Conexión wifi gratis en las habitaciones', 'Aparcamiento': 'Aparcamiento sin asistencia gratuito en las instalaciones,Aparcamiento para coches accesible en silla de ruedas en las instalaciones', 'Traslados': 'Traslado desde/hasta el aeropuerto*', 'Información adicional': 'Servicio de limpieza diario,Caja fuerte', 'Comida y bebida': '6 restaurantes,5 bares o lounges,Bar junto a la piscina,Cafetería,Café y té en una zona común,Servicio de habitaciones las 24 horas,Snack-bar o delicatessen', 'Actividades': 'Tenis,Ráquetbol o squash,Vóleibol,Submarinismo,Cerca de la playa,Rutas a pie o en bicicleta en las inmediaciones,Ciclismo de montaña en las inmediaciones,Kayak en las inmediaciones,Esnórquel en las inmediaciones,Alquiler de ciclomotores o scooters en las inmediaciones', 'Teletrabajo': 'Centro de negocios abierto las 24 horas,5 salas de reuniones,Sala de ordenadores,Centro de conferencias de 1899 metros cuadrados']
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement