41 puntos por GN⁺ 2024-02-21 | 5 comentarios | Compartir por WhatsApp

Ventajas del web scraping en Python

  • Sintaxis simple: permite programar rápidamente
  • Bibliotecas integradas: urllib, lxml y otras ayudan con el scraping
  • Bibliotecas de scraping maduras: Beautiful Soup, Scrapy y otras
  • Versatilidad: útil para construir pipelines de datos
  • Interoperabilidad: funciona bien al integrarse con otros lenguajes y cuando el rendimiento es importante

Bibliotecas de web scraping en Python

  • BeautifulSoup: análisis de HTML/XML, navegación y búsqueda flexibles
  • Scrapy: rápido y escalable, con middleware y funciones de crawling distribuido
  • Selenium: automatización del navegador, manejo de sitios centrados en JavaScript
  • lxml: parser XML/HTML muy rápido
  • pyquery: acceso a elementos HTML con sintaxis estilo jQuery

Preparación para hacer scraping

  • Se recomienda configurar un entorno virtual
  • Bibliotecas necesarias: Requests, BeautifulSoup, OS

Elegir el sitio web objetivo para el scraping

  • Se elige la página de Wikipedia "Lista de razas de perro"
  • HTML bien estructurado, varios campos de datos e imágenes incluidas

Escribir el código de scraping

  • Importar las bibliotecas necesarias
  • Usar User-Agent para hacerse pasar por un navegador
  • Descargar la página HTML con requests y validar su contenido
  • Analizar el HTML con BeautifulSoup
  • Extraer datos con selectores CSS
  • Descargar y guardar imágenes

Retos reales del web scraping y mejores prácticas

  • Manejo de contenido dinámico: usar Selenium o la integración splash de Scrapy
  • Evitar bloqueos: ajustar la velocidad de las solicitudes, imitar el navegador y rotar user agents y proxies
  • Límites de velocidad: respetar el retraso de rastreo, usar proxies y ajustar automáticamente las solicitudes
  • Análisis de HTML complejo: usar parsers potentes como lxml y reforzar los selectores

Opinión de GN⁺

  • Lo más importante: Python es un lenguaje potente para el web scraping; su sintaxis simple y su amplio ecosistema de bibliotecas lo hacen adecuado para proyectos de scraping web de distintos tamaños.
  • Por qué es interesante: el web scraping es una técnica esencial para la recopilación y el análisis de datos, y esta guía ofrece conocimientos prácticos que un ingeniero de software principiante puede aplicar en proyectos reales.
  • Por qué ayuda: el web scraping puede aplicarse en muchos campos, y esta guía ayuda a desarrollar habilidades de scraping sólidas para la práctica real mediante retos reales y mejores prácticas.

5 comentarios

 
yangeok 2024-02-26

Para renderizado con JavaScript, Playwright es de lo mejor. Vi que tiene una compatibilidad de lenguajes bastante amplia.

Si lo combinas con Scrapy, parece que podría haber buena sinergia.

 
ikbzbcg15 2024-02-21

Eh, en estos tiempos hay que usar Playwright.

 
bandoche 2024-02-21

En la práctica, cuando uno hace scraping como trabajo, lo más engorroso termina siendo manejar el navegador (el chrome webdriver, que a menudo falla) y resolver los bloqueos (los distintos captcha).

 
GN⁺ 2024-02-21
Comentarios de Hacker News
  • Es importante separar el crawling web del scraping. El crawling es la etapa de encontrar URLs y obtener el contenido HTML, y el scraping es la etapa de extraer datos estructurados del HTML. Si separas ambas etapas, después puedes modificar el scraper y volver a aplicarlo rápidamente sobre los datos existentes.
  • Recomiendan Playwright como herramienta de scraping web en Python. Es una herramienta de automatización de navegadores muy potente y bien diseñada, y usan la herramienta CLI shot-scraper para hacer scraping de páginas web directamente desde la línea de comandos.
  • Que las empresas SaaS promocionen sus productos en publicaciones de blog es parte del marketing, pero siempre resulta curioso cuando presentan el problema por primera vez a principiantes y luego ofrecen su propio producto como solución.
  • Puede ser útil revisar <domain>/robots.txt, donde hay información útil para hacer scraping de un sitio web, y extraer datos mediante metadatos estructurados en lugar de analizar etiquetas HTML. También hay bibliotecas para extraer esto como JSON.
  • Cuestionan la popularidad del scraping web con Node.js en lugar de Python. En npm hay paquetes muy bien hechos para parsear el DOM y, como se usa JavaScript, se pueden aprovechar funciones del DOM de manera más natural.
  • Se pueden obtener enlaces fácilmente usando read_html de pandas. Con eso, es posible extraer con facilidad datos tabulares de un sitio web.
  • Están cansados del trabajo de scraping web repetitivo y poco creativo, así que ahora intentan usar LLM (Large Language Models) para automatizar todo el proceso. Es eficiente usar LLM para generar y ajustar código de scrapers que se adapte a cambios en los sitios web.
  • Cuestionan cuántas "guías completas" sobre scraping en Python existen realmente.
  • Una configuración moderna de scraping web necesita un agente de navegador, y para obtener datos de las principales plataformas de redes sociales o de artículos del New York Times, quizá haya que construir herramientas propias.
  • La biblioteca requests-cache ayuda durante el trabajo de scraping. Reemplaza a requests, pero almacena en caché todas las respuestas en una base de datos SQLite, lo que resulta útil para ajustar scripts cuando un sitio empieza a limitarte.
 
xguru 2024-02-21

Lo importante de este comentario es

Que las empresas SaaS promocionen sus productos en publicaciones de blog es parte del marketing, pero siempre resulta curioso que, al presentarle un problema por primera vez a un principiante, propongan su propio producto como solución.

Eso es justamente lo clave. Siempre hay que leer este tipo de textos teniendo en cuenta que al final incluyen publicidad de su propio producto. Dicho al revés, también creo que las empresas locales deberían usar este enfoque como algo básico.