Este proyecto es un script en Python que utiliza BeautifulSoup y Selenium para extraer información de propiedades en venta publicadas en Fotocasa. El objetivo es obtener datos clave de los anuncios, como título, precio, ubicación, superficie, número de habitaciones, número de baños y enlace al anuncio, y almacenarlos en un archivo CSV.
El código actualmente opera en un archivo HTML descargado para pruebas de scraping, y hay una versión adaptada para combinar Selenium y BeautifulSoup que permite automatizar la navegación y capturar contenido dinámico.
- Automatización de la navegación: Interacción con la página mediante Selenium para manejar contenido dinámico y simulación de scroll.
- Extracción de datos: Análisis del DOM con BeautifulSoup para capturar:
- Título del anuncio
- Precio
- Ubicación
- Superficie
- Habitaciones y baños
- Enlace al anuncio
- Salida estructurada: Los datos extraídos se guardan en un archivo CSV.
Bloqueos del sitio:
- Fotocasa puede bloquear el acceso si detecta un uso automatizado (como scrapers).
- Posibles soluciones:
- Usar un User-Agent realista para simular un navegador.
- Implementar pausas aleatorias y un scroll más natural para evitar patrones repetitivos.
- Alternar direcciones IP utilizando una VPN o un servicio de proxies.
Compatibilidad con versiones de Chrome y ChromeDriver:
- Es fundamental que las versiones de Google Chrome y ChromeDriver sean compatibles.
- Se recomienda verificar las versiones instaladas ejecutando:
google-chrome --version chromedriver --version
- Si las versiones no coinciden, descarga la versión adecuada de ChromeDriver desde Chrome for Testing.
- Para sistemas macOS, asegúrate de otorgar permisos a
chromedriver
en "Seguridad y Privacidad" si aparece un error de verificación de software malicioso.
Configuraciones adicionales:
- En el caso de ejecutar el script en GitHub Actions, asegúrate de que las rutas de
chromedriver
ygoogle-chrome
estén configuradas correctamente.
- Python 3.10 o superior
- Google Chrome: Asegúrate de tener instalada la versión más reciente de Google Chrome.
- ChromeDriver: Debes descargar e instalar la versión correcta de ChromeDriver que coincida con tu versión de Chrome.
- Para sistemas Unix/macOS, mueve el binario a
/usr/local/bin
:
sudo mv chromedriver /usr/local/bin/chromedriver
- Verifica que ChromeDriver esté instalado correctamente:
chromedriver --version
- Para sistemas Unix/macOS, mueve el binario a
- Librerías necesarias:
pip install -r requirements.txt
fotocasa-scraper/
├── .github/
│ └── workflows/
│ └── main.yml # Configuración para GitHub Actions
├── img # Recursos de imágenes
├── main.py # Script principal (Selenium y BeautifulSoup)
├── requirements.txt # Dependencias del proyecto
├── data
| └── pisos_fotocasa.csv # CSV generado por el script
└── README.md # Documentación del proyecto
- Activa el entorno virtual:
source .venv/bin/activate
- Configuración de dependencias:
pip install -r requirements.txt
- Verifica que chromedriver está configurado:
chromedriver --version
- Ejecuta el script:
python main.py
El script:
- Acepta cookies automáticamente.
- Realiza un scroll simulado para cargar todos los anuncios.
- Navega por las páginas hasta que no haya más resultados.
- Guarda los datos extraídos en un archivo CSV (
data/pisos_fotocasa.csv
).
El proyecto está configurado para ejecutarse automáticamente en GitHub Actions, lo que permite realizar scraping sin necesidad de ejecutarlo localmente. Esto es especialmente útil para programar tareas automáticas o recopilar datos de manera regular.
El archivo de configuración del workflow se encuentra en .github/workflows/fotocasa-scraper.yml
. El flujo incluye los siguientes pasos:
-
Configurar el entorno:
- Instala Python y las dependencias necesarias.
- Configura Google Chrome y ChromeDriver.
-
Ejecutar el script:
- El script se ejecuta automáticamente en el entorno configurado y genera el archivo
data/pisos_fotocasa.csv
.
- El script se ejecuta automáticamente en el entorno configurado y genera el archivo
-
Programación automática:
- El workflow está configurado para ejecutarse automáticamente cada lunes a las 9:00 AM (UTC) mediante el siguiente cron:
on: schedule: - cron: "0 9 * * 1"
- El workflow está configurado para ejecutarse automáticamente cada lunes a las 9:00 AM (UTC) mediante el siguiente cron:
- Si deseas cambiar la periodicidad del scraping, modifica el cron en
.github/workflows/fotocasa-scraper.yml
. - Puedes añadir notificaciones o tareas adicionales, como subir los resultados a un repositorio o enviarlos por correo.
Note
Este proyecto es de uso personal y educativo. Fotocasa puede bloquear el acceso a su sitio si detecta patrones automatizados. Asegúrate de respetar los términos de uso del sitio.