Web Scraping 101
Guide Spanish
En esta guía veremos como realizar un proyecto de webscraping paso a paso, desde la configuración del entorno hasta el despliegue del proyecto. En esta primera versión se dará una introducción corta a cada apartado dejando para futuras versiones explicaciones detalladas de cada apartado.
Índice
- 1 Análisis del objetivo
- 2 Configuración del entorno
- 3 Prototipado
- 4 Desarrollo del Scraper
- 5 Pipeline
- 6 Almacenamiento
- 7 Automatización
- 8 Contact
- Análisis del objetivo
Antes de iniciar un proyecto de webscraping es importante conocer la pagina a la que vas a extraer su información, lo principalmente es identificar como carga la información de forma estática o dinámica, poniendo un ejemplo, las redes sociales suelen cargar su contenido principal de forma dinámica lo que implica que incluso cuando la pagina termino de cargar siguen actualizando la información, mientras paginas como Wikipedia o de noticias, cargan todo el contenido una vez lo que facilita la descarga de la información.
Una vez identificada la pagina objetivo se deben identificar las secciones de tu interés y el como llegar.
Debemos conocer la estructura de la información que se carga en el navegador, la ruta que usará nuestro bot es muy similar a la nuestra pero hay que saber dar las instrucciones correctas para llegar, desde los botones que hay que presionar, los casos donde debemos mandar información y las direcciones para llegar a esa información.
- Tiempo estimado: 1 día
- Identificar la ruta para llegar a la información (se recomienda escribirla o dibujarla para tenerlo claro).
- Configuración del entorno
Crea un entorno virtual (utiliza conda) y define tus dependencias (recomiendo para iniciar: ‘notebook’, ‘beautifulsoup4’, ‘request’ y ‘pandas’).
[cite_start]conda create env --name <el nombre que quieras> <las depencias que quieras> [cite: 28]
# [cite_start]ejemplo: conda create env --name webscraping101 notebook beautifulsoup4 request pandas [cite: 29]
# [cite_start]Una vez definas las dependencias, guarda la lista [cite: 30]
# [cite_start]de dependencias que instalaste con el siguiente comando: [cite: 31]
[cite_start]conda create --name webscraping101 --file requirements.txt [cite: 32]
Inicia el entorno git para versionar el codigo. Recomiendo recrear el siguiente esquema de proyecto antes de dar tu primer commit con git.
-
project-root/ -
data/# Datos extraídos -
logs/# Archivos de registro de errores -
src/ -
spiders/# Lógica específica de cada sitio -
utils/# Limpieza de texto, proxies, headers -
database.py# Conexión a BD -
requirements.txt# Dependencias -
.env# Variables sensibles (API Keys, Proxies) -
README.md# Explicación de cómo correr el scraper -
Tiempo estimado: 1 día
-
Crear entorno, iniciar git, crear la estructura de archivos y carpestas y mandar el primer commit.
- Prototipado
Usa un Notebook o un script simple para probar selectores (CSS o XPath).
- Tiempo estimado: 2 semanas
- Utilizar Jupyter Notebooks para probar nuestro esquema de obtención de información, con notebooks podemos probar de forma ágil nuestra hipótesis con código.
- Desarrollo del Scraper
Implementa la lógica de navegación y extracción.
- Tiempo estimado: 4 semanas
- Pasar la lógica de nuestro archivo en notebooks a un script the python, incluyendo un sistema de registro para guardar un registro de errores, registros exitosos recolectados, incluyendo su registro temporal.
- Pipeline
Procesa los datos crudos antes de guardarlos.
- Tiempo estimado: 1 día
- Se debe almacenar la información sin formatear.
- Almacenamiento
Exporta a CSV, JSON o una base de datos.
- Tiempo estimado: 1 día
- Se almacena la información en un formato de conveniencia por el tipo podría ser JSON aunque para añadir complejidad podemos usar una base de datos, la información debe estar formateada.
- Automatización
Configura ejecuciones periódicas si es necesario.
- Tiempo estimado: 8 semanas
- Implementar todo lo que se hizo pero como tareas periodicas.