Resumen
En este episodio (E92) Mati presenta el web scraping desde la perspectiva de un científico de datos: extraer información de páginas web para guardarla y usarla en análisis o modelos. Como caso práctico scrapea la página de comparación de precios Canasta (en pleno Cyber Day), pasando por el código fuente, Octoparse, Selenium, Requests + BeautifulSoup y la pestaña Network del navegador. Conclusiones principales: - Se necesita entender lo básico de HTML, CSS y JavaScript, no ser experto. - Con la información de la pestaña Network (o el JSON embebido en un tag `script`) se puede evitar scrapear el HTML renderizado, y es la técnica más rápida y limpia. - Selenium es más lento pero imita la navegación real. - Hay problemas recurrentes: cambios de layout, bloqueos por IP, logins, captchas y dudas legales/éticas.
Capítulos
- 00:00IntroPresentan el tema del episodio 92. Mati explica que lo abordará desde su experiencia real como científico de datos: lo que sabe, lo que no ha necesitado aprender y lo que prefiere delegar.
- 01:37Qué es web scrapingEs un proceso de extracción de datos de sitios web, para luego almacenarlos. Se menciona el ejemplo de los bots de Google que indexan páginas y se aclara que al Data Scientist le interesa extraer información útil para sus problemas. Se muestra la página Cyber como ejemplo cuyo negocio es el scraping.
- 05:49KanastaCanasta es un comparador de precios que muestra el historial de precio de productos (ejemplo: PlayStation 5, iPhone 15), permitiendo ver si una oferta de Cyber es real. Se comenta que cuando la página cambia de layout el scraper se rompe.
- 09:28Por qué podría ser útil?Casos de uso: enriquecer datos de clientes con información en páginas web, conocer precios de la competencia, extraer datos de proveedores sin botón de descarga, páginas amarillas, precio del dólar o indicadores del Banco Central. También se discute si un Data Scientist es o no un desarrollador, y se menciona que se puede comprar el servicio ya hecho y usar ChatGPT para generar un esqueleto de código a partir del HTML.
- 17:07Cómo está hecha una página webExplica HTML con tags, atributos y cuerpo (párrafo, imagen con `src` y `alt`) usando un ejemplo de juguete.
- 19:45Código fuente de páginas realesLas páginas reales son mucho más complejas que el ejemplo de juguete y usan frameworks. Se muestra cómo usar "Inspeccionar elemento" / Ctrl+Shift+C / F12, y cómo ubicar los tags `div` y `span` de un texto. Se introduce el DOM como estructura de árbol.
- 24:12CSS y estiloCSS define el estilo de la página (tamaños, colores, alineación) mediante clases; los frameworks de desarrollo web facilitan esto en la práctica.
- 26:02JavascriptJavaScript modifica dinámicamente el DOM, por lo que el código fuente inicial no siempre contiene los datos. Se discute hasta dónde conviene aprender y se menciona que React es difícil para scraping; se plantea usar Selenium cuando hay que hacer clic para cargar información.
- 30:45Caso realSe intenta scrapear canasta.cl: la información no aparece en el HTML visible sino en un JSON dentro de un script, que se formatea para leerlo. Se comentan problemas de Instagram (clases cambiantes, bloqueos) y de bloqueos de IP, y los servicios de proxies rotativos.
- 39:18OctoparseHerramienta tipo drag and drop que detecta datos de la página y permite extraer y automatizar tareas; tiene versión gratuita y planes de pago (caro según Mati). Se enumeran usos: precios, comentarios, sentimiento en Twitter y noticias.
- 44:09SeleniumAutomatiza el navegador (Chrome con su driver). Se abre la página con `get` y se buscan elementos por XPath (por ejemplo `div` con cierta clase) para extraer marca, descripción y precio de seis publicaciones. Se nota que la marca falla en un caso porque no estaba en negrita (`span`).
- 48:22MemesSección de memes de la comunidad: el gato-perro, una oferta de trabajo que mezcla Data Analyst, Data Scientist y Data Engineer (con aclaración de roles), el "yo del pasado", y API vs scraping. También se explica API vs base de datos y se pregunta por Playwright vs Selenium.
- 58:16Continuación de seleniumSe vuelve a ejecutar el código, se muestra que Selenium carga en vivo y hay que esperar la carga con sleeps, y se hace clic programáticamente sobre una publicación (con un error de índice 0/1/2). Se mencionan atajos para ejecutar celdas (Ctrl+A, Ctrl+Shift+Home) y que existe modo headless.
- 01:08:05RequestCon la librería requests y BeautifulSoup se piden las páginas del catálogo (hay 421 páginas de ofertas del día) cambiando el parámetro de página, con headers y user-agent, y se extrae el JSON del tag `script` de tipo `application/json`. Se comenta guardar a archivos log, controlar errores y que la información cambia mientras se scrapea. Es mucho más rápido que Selenium.
- 01:18:34Información de redEn la pestaña Network de las herramientas de desarrollador se ve la llamada que hace la página al buscar (ej. "iPhone 15") y su respuesta JSON, que se replica con requests; a veces hacen falta cookies. Se puede grabar y descargar la actividad de red. Mati lo considera la técnica más limpia y la primera que prueba.
- 01:28:05CierreProblemas típicos: logins obligatorios, captchas, bloqueos por IP (también a proveedores como AWS), cambios de la página, y ética/legalidad (casos como LinkedIn; en Chile no hay claridad). Se menciona robots.txt como sugerencia, se anuncia que subirán el código y se despiden con los canales de YouTube y Discord, y los streams de martes de 7 a 9 hora de Chile.