Tome el poder del web scraping en sus manos
La frase «tenemos suficientes datos» no existe en el lenguaje de la ciencia de datos. Nunca me he encontrado con nadie que haya dicho voluntariamente que no a la recopilación de más datos para su proyecto de aprendizaje automático o aprendizaje profundoEl aprendizaje profundo, una subdisciplina de la inteligencia artificial, se basa en redes neuronales artificiales para analizar y procesar grandes volúmenes de datos. Esta técnica permite a las máquinas aprender patrones y realizar tareas complejas, como el reconocimiento de voz y la visión por computadora. Su capacidad para mejorar continuamente a medida que se le proporcionan más datos la convierte en una herramienta clave en diversas industrias, desde la salud.... Y a menudo hay situaciones en las que los datos que tiene simplemente no son suficientes.
Ahí es cuando el poder del web scraping pasa a primer plano. Es una técnica poderosa que cualquier analista o científico de datos debe poseer y que lo mantendrá en una buena posición en la industria (¡y cuando esté sentado para entrevistas!).
Hay una gran cantidad de bibliotecas de Python disponibles para realizar raspado web. Pero, ¿cómo decides cuál elegir para tu proyecto en particular? ¿Qué biblioteca de Python tiene la mayor flexibilidad? Mi objetivo es responder estas preguntas aquí, a través de la lente de cinco bibliotecas populares de Python para raspado web que creo que todos los entusiastas deberían conocer.
Bibliotecas de Python para web scraping
El web scraping es el proceso de extraer datos estructurados y no estructurados de la web con la ayuda de programas y exportarlos a un formato útil. Si desea obtener más información sobre el raspado web, aquí hay un par de recursos para comenzar:
Muy bien, ¡veamos las bibliotecas de raspado web en Python!
1. Biblioteca de solicitudes (HTTP para humanos) para web scraping
Comencemos con la biblioteca de Python más básica para web scraping. ‘Solicitudes’ nos permite realizar solicitudes HTML al servidor del sitio web para recuperar los datos en su página. Obtener el contenido HTML de una página web es el primer y más importante paso del web scraping.
Peticiones es una biblioteca de Python utilizada para realizar varios tipos de solicitudes HTTP como OBTENER, CORREO, etc. Debido a su simplicidad y facilidad de uso, viene con el lema de HTTP para humanos.
Diría que esta es la biblioteca más básica pero esencial para el web scraping. Sin embargo, la biblioteca de solicitudes no analiza los datos HTML recuperados. Si queremos hacer eso, necesitamos bibliotecas como lxml y Beautiful Soup (las cubriremos más adelante en este artículo).
Echemos un vistazo a las ventajas y desventajas de la biblioteca Requests Python.
Ventajas:
- Sencillo
- Autenticación básica / implícita
- URL y dominios internacionales
- Solicitudes fragmentadas
- Soporte de proxy HTTP (S)
Desventajas:
- Recupera solo el contenido estático de una página
- No se puede utilizar para analizar HTML
- No puedo manejar sitios web creados exclusivamente con JavaScript.
2. Biblioteca lxml para web scraping
Conocemos el peticiones la biblioteca no puede analizar el HTML recuperado de una página web. Por lo tanto, requerimos lxml, una biblioteca Python de análisis de XML y HTML de calidad de producción, increíblemente rápida y de alto rendimiento.
Combina la velocidad y el poder de los árboles de elementos con la simplicidad de Python. Funciona bien cuando nuestro objetivo es extraer grandes conjuntos de datos. La combinación de peticiones y lxml es muy común en el web scraping. También le permite extraer datos de HTML utilizando selectores XPath y CSS.
Echemos un vistazo a las ventajas y desventajas del lxml Biblioteca de Python.
Ventajas:
- Más rápido que la mayoría de analizadores
- Ligero
- Utiliza árboles de elementos
- API Pythonic
Desventajas:
- No funciona bien con HTML mal diseñado
- La documentación oficial no es muy apta para principiantes.
3. Hermosa biblioteca de sopas para web scraping
Hermosa Sopa es quizás la biblioteca de Python más utilizada para web scraping. Crea un árbol de análisis para analizar documentos HTML y XML. Beautiful Soup convierte automáticamente los documentos entrantes a Unicode y los documentos salientes a UTF-8.
Una de las razones principales por las que la biblioteca Beautiful Soup es tan popular es que es más fácil de trabajar y es adecuada para principiantes. También podemos combinar Beautiful Soup con otros analizadores como lxml. Pero toda esta facilidad de uso tiene un costo: es más lento que lxml. Incluso mientras usa lxml como analizador, es más lento que puro lxml.
Una de las principales ventajas de la biblioteca Beautiful Soup es que funciona muy bien con HTML mal diseñado y tiene muchas funciones. La combinación de Sopa hermosa y Peticiones es bastante común en la industria.
Ventajas:
- Requiere algunas líneas de código
- Gran documentación
- Fácil de aprender para principiantes
- Robusto
- Detección automática de codificación
Desventajas:
Si desea aprender a copiar páginas web con Beautiful Soup, este tutorial es para usted:
4. Biblioteca de selenio para web scraping
Existe una limitación para todas las bibliotecas de Python que hemos discutido hasta ahora: no podemos extraer fácilmente datos de sitios web poblados dinámicamente. Ocurre porque a veces los datos presentes en la página se cargan a través de JavaScript. En palabras simples, si la página no es estática, las bibliotecas de Python mencionadas anteriormente luchan por extraer los datos de ella.
Ahí es donde entra en juego el selenio.
Selenio es una biblioteca de Python creada originalmente para pruebas automatizadas de aplicaciones web. Aunque originalmente no estaba hecho para web scraping, ¡la comunidad de ciencia de datos cambió eso con bastante rapidez!
Es un controlador web creado para renderizar páginas web, pero esta funcionalidad lo hace muy especial. Donde otras bibliotecas no son capaces de ejecutar JavaScript, Selenium sobresale. Puede hacer clics en una página, llenar formularios, desplazarse por la página y hacer muchas más cosas.
Esta capacidad de ejecutar JavaScript en una página web le da a Selenium el poder de extraer páginas web pobladas dinámicamente. Pero aquí hay una compensación. Carga y ejecuta JavaScript para cada página, lo que la hace más lenta y no adecuada para proyectos a gran escala.
Si el tiempo y la velocidad no son una preocupación para usted, definitivamente puede usar Selenium.
Ventajas:
- Apto para principiantes
- Raspado web automatizado
- Puede raspar páginas web pobladas dinámicamente
- Automatiza los navegadores web
- Puede hacer cualquier cosa en una página web similar a una persona
Desventajas:
- Muy lento
- Difícil de configurar
- Alto uso de CPU y memoria
- No es ideal para proyectos grandes.
Aquí hay un artículo maravilloso para aprender cómo funciona Selenium (incluido el código Python):
5. Scrapy
Ahora es el momento de presentarle las bibliotecas de raspado web de BOSS of Python: ¡Scrapy!
Scrapy no es solo una biblioteca; es un marco de web scraping completo creado por los cofundadores de Scrapinghub: Pablo Hoffman y Shane Evans. Es una solución de raspado de banda en toda regla que hace todo el trabajo pesado por usted.
Scrapy proporciona robots araña que pueden rastrear varios sitios web y extraer los datos. Con Scrapy, puede crear sus robots araña, alojarlos en Scrapy Hub o como una API. Te permite crear arañas completamente funcionales en cuestión de minutos. También puede crear pipelines usando Scrapy.
Lo mejor de Scrapy es que es asincrónico. Puede realizar múltiples solicitudes HTTP simultáneamente. Esto nos ahorra mucho tiempo y aumenta nuestra eficiencia (¿y no nos esforzamos todos por eso?).
También puede agregar complementos a Scrapy para mejorar su funcionalidad. Aunque Scrapy no puede manejar JavaScript como el selenio, puede emparejarlo con una biblioteca llamada Splash, un navegador web liviano. Con Splash, Scrapy puede incluso extraer datos de sitios web dinámicos.
Ventajas:
- Asincrónico
- Excelente documentación
- Varios complementos
- Cree canalizaciones y middlewares personalizados
- Bajo uso de CPU y memoria
- Arquitectura bien diseñada
- Una plétora de recursos en línea disponibles
Desventajas:
- Curva de aprendizaje pronunciada
- Exceso para trabajos fáciles
- No apto para principiantes
Si quieres aprender Scrapy, que te recomiendo encarecidamente, deberías leer este tutorial:
¿Que sigue?
Personalmente, encuentro estas bibliotecas de Python extremadamente útiles para mis requisitos. Me encantaría escuchar sus opiniones sobre estas bibliotecas o si usa cualquier otra biblioteca de Python, hágamelo saber en la sección de comentarios a continuación.
Si te gustó el artículo, compártelo en tu red y sigue practicando estas técnicas.