SpiderWise es un proyecto de web scraping desarrollado con PHP Symfony y la biblioteca HttpBrowser para recopilar información estructurada desde sitios web. Este repositorio incluye una implementación para scrapear múltiples páginas de un sitio específico y almacenar o analizar los datos extraídos.
- Scraping de múltiples páginas con soporte para rangos dinámicos.
- Extracción de contenido HTML completo y datos específicos de cada elemento.
- Modularidad a través de servicios en Symfony para facilitar la reutilización.
- Escalabilidad para manejar scraping de grandes volúmenes de datos.
Asegúrate de tener instalados los siguientes componentes antes de comenzar:
- PHP 8.1 o superior
- Composer
- Symfony CLI (opcional, pero recomendado)
- Extensión cURL habilitada en PHP
- Navegador compatible con Symfony para desarrollo
Sigue estos pasos para clonar y configurar el proyecto:
-
Clonar el repositorio:
git clone https://github.com/RaulAM7/WebScrapping-PHP-SpiderWise.git cd WebScrapping-SpiderWise -
Instalar las dependencias:
composer install
-
Configurar variables de entorno: Crea un archivo
.env.localy configura las variables necesarias (si aplica). -
Iniciar el servidor de desarrollo: Si tienes instalado Symfony CLI:
symfony server:start
O usa el servidor PHP integrado:
php -S localhost:8000 -t public
Puedes iniciar el scraping de empresas ejecutando las siguientes rutas desde tu navegador o usando herramientas como Postman o curl:
-
Scrapear todas las páginas: Visita:
http://localhost:8000/scrape-companies -
Scrapear un rango de páginas personalizado: Edita los parámetros
startyenden el métodoscrapeMultiplePagesCompaniesdel servicioBlogScraper.
Los datos extraídos se mostrarán directamente en la página o en la terminal con el uso de dd() para depuración. Cada entrada incluirá:
- Nombre de la empresa
- Enlace principal
- Categoría o descripción
- Contenido HTML completo del bloque
company-list
Para adaptar el scraper a otros sitios web:
- Crea un nuevo método en el servicio
BlogScrapero un nuevo servicio basado enBaseScraper. - Modifica los selectores CSS y la lógica según la estructura HTML del sitio objetivo.
src/Controller/ScrapingController.php: Controlador que maneja las rutas de scraping.src/Service/Scrapers/BaseScraper.php: Servicio base para inicializar el cliente HTTP.src/Service/Scrapers/BlogScraper.php: Lógica del scraping, incluyendo el manejo de múltiples páginas.templates/: Plantillas Twig para renderizar los datos (opcional).
Este proyecto utiliza las siguientes dependencias principales:
- Symfony como framework PHP
- HttpBrowser para manejar solicitudes HTTP
- HttpClient para realizar solicitudes GET/POST
Instaladas con:
composer require symfony/browser-kit symfony/http-client- Tiempo de ejecución: Si el scraping incluye muchas páginas, ajusta el tiempo de ejecución con
set_time_limit()o usa un comando Symfony para correr en segundo plano. - Evitar bloqueos: Agrega pausas (
sleep) entre solicitudes para evitar saturar el servidor objetivo.
- Escalabilidad: Implementar almacenamiento en base de datos (Doctrine) para manejar datos masivos.
- Mutabilidad: Implementar más tipos de scrapeo de múltiples de tipos de fuentes
- Flexibilidad: Implementar cronjob para que la ejecución de los scrappings pueda ser flexible y no se limite a una ejecución
¡Las contribuciones son bienvenidas! Por favor, abre un Issue o un Pull Request para sugerir mejoras o reportar errores.
O si lo prefieres escribeme a raulartilesm@gmail.com
Este proyecto está licenciado bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
