Web Scraping: Extracción de Datos y Ética Digital
El Web Scraping es el proceso de utilizar bots para extraer contenido y datos de un sitio web. A diferencia de las APIs oficiales, el scraping simula la navegación humana para obtener información que no está disponible de forma estructurada.
1. El Manifiesto del Scraping Ético
Antes de escribir una sola línea de código, debemos entender que los servidores que consultamos tienen dueños y costos de mantenimiento. Un buen desarrollador sigue estas reglas:
- Revisar el
robots.txt: Siempre verificatu-sitio.com/robots.txtpara ver qué áreas el dueño permite rastrear. - No saturar el servidor: Añade retrasos (
time.sleep) entre peticiones para no provocar una caída del sitio (Ataque DoS). - Identificarse: Configura un "User-Agent" honesto que incluya tu contacto si es posible.
- Respetar la Propiedad Intelectual: No utilices datos extraídos para replicar el negocio de otro o violar derechos de autor.
2. Herramientas Principales
En Python, el ecosistema de scraping es muy maduro: 1. Requests: Para descargar el código HTML de la página. 2. BeautifulSoup: Para "parsear" (analizar) el HTML y extraer etiquetas específicas (títulos, precios, enlaces). 3. Selenium / Playwright: Para interactuar con sitios modernos que cargan contenido dinámicamente con JavaScript.
3. Anatomía de una Extracción
El proceso consiste en identificar las etiquetas HTML donde reside la información. Por ejemplo, si buscamos el precio de un producto, inspeccionamos el código del sitio para encontrar algo como: <span class="precio">$500</span>.
Reto: Simulador de Extracción Segura
Vamos a practicar la lógica de extracción simulando que hemos descargado el HTML de una tienda de libros. Tu tarea es extraer el título del libro de forma limpia.
Instrucciones:
- Importa la clase
BeautifulSoupdesde el módulobs4. - Supongamos que la variable
html_docya contiene el código de la página. - Crea un objeto llamado
sopausandoBeautifulSoup(html_doc, 'html.parser'). - Extrae el texto dentro de la etiqueta
h1y guárdalo en la variabletitulo.
# Extracción de datos responsable: