viernes, 25 de septiembre de 2020

Recetas para automatizar tareas en Python con Jaime Buelta

'Python Automation Cookbook' es exactamente lo que promete en su título y, sobre todo, en su subtítulo '75 Python automation ideas for web scraping, data wrangling, and processing Excel, reports, emails, and more'. Se trata de una larga lista de técnicas, ideas, trucos y recursos para llevar a cabo la automatización de tareas sobre aplicaciones, ficheros, etc, de manera que las funcionalidades de automatización que se podrían obtener de soluciones RPA comerciales puedan ser llevadas a cabo de manera personalizada directamente en Python. 

Cada una de las 75 recetas que componen el libro se estructura de la misma forma, a saber:
  • Getting ready: Describe labores previas de instalación, configuración, etc
  • How to do it...: Descripción directa, con pocas explicaciones y 'mucho' código, de cómo se aplica la receta.
  • How it works...: Explicación algo más detallada de cómo funciona por dentro la receta explicada
  • There is more...: Referencia otras fuentes de información adicionales
  • See also: Remite a otras recetas del libro relacionadas
Y esas recetas, a su vez se agrupan en los siguientes capítulos:
  • 'Let's Begin Our Automation Journey': Se centra unas técnicas básicas que permiten crear el entorno Python adecuado para la ejecución de las tareas de automatización que se presentan en el resto del libro así como tareas básicas para el 'parseo' de texto siendo capaces de obtener de él datos estructurados. Entre los recursos que se utilizan están el módulo 'env' para establecer un entorno virtual local, el módulo 'requests' para el tratamiento de conexiones HTTP, el método 'format' para el formateado de cadenas de caracteres, el módulo 're' para el tratamiento de expresiones regulares y finalmente 'argparse' para el tratamiento de argumentos en línea de comando. Las recetas que se tratan en este capítulo son:
    • Activar un entorno virtual
    • Instalar paquetes de terceros
    • Crear cadenas de caracteres con datos formateados
    • Manipulación de cadenas de caracteres
    • Extraer datos de cadenas de caracteres estructuradas
    • Usar una herramienta d eterceros para el parseado
    • Introducir expresiones regulares
    • Profundizar en expresiones regulares
    • Añadir argumentos a la línea de comandos

  • 'Automating Tasks Made Easy': Todavía en un estadio previo a las tareas de automatización propiamente dichas, este capítulo propone ideas para hacer que esas tareas se realicen realmente de manera automática sin necesidad de lanzarlas manualmente. Aparte de 'cron', el capítulo menciona el uso de recursos como el módulo 'logging' que gestiona los 'logs'. Las recetas que conforman este capítulo son:
    • Preparar una tarea
    • Establecer un trabajo en el 'cron'
    • Capturar errores y problemas
    • Enviar notificaciones por correo electrónico

  • 'Building Your First Web Scraping Application': Ataca un tipo de tareas fundamentales en la automatización mediante robots software: el acceso a los datos y la navegación de pantallas web, conocido como Web Scraping. Se utilizan recursos como el módulo 'requests' ya mencionado, el módulo 'BeautifulSoup' que parsea HTML y lo devuelve como un objeto, el módulo 'feedparser' para tratamiento de feeds RSS o 'selenium'. Las recetas en este caso son:
    • Descargar páginas web
    • 'Parsear' HTML
    • Rastrear la web
    • Suscribirse a 'feeds'
    • Acceder a APIs web
    • Interactuar con formularios
    • Usar 'Selenium' para interacciones avanzadas
    • Acceder a páginas protegidas por contraseña
    • Acelerar el web scraping

  • 'Searching and Reading Local Files': Otro capítulo fundamental con el segundo gran bloque característico de la automatización mediante robots software: el tratamiento de ficheros así como la navegación por directorios. Se usan recursos como el módulo 'os' con funciones básicas ligadas al sistema operativo como, por ejemplo, recorrer directorios, de nuevo 'BeautifulSoup' en tareas de formateado, el módulo 'csv' para el tratamiento de ficheros CSV, 'datetime' para datos de tipo fecha/hora, la librería 'Pillow' para el manejo de imágenes, 'xmltodict' para conversión de XML en un diccionario, 'tesseract' para OCR, el módulo 'PyPDF2' para tratamiento de ficheros PDF, y 'python-docx' para gestión de ficheros Word. Con toda esa base, las recetas de este capítulo son:
    • Rastrear y buscar en directorios
    • Leer ficheros de texto
    • Gestionar las codificaciones
    • Leer ficheros CSV
    • Leer ficheros de 'log'
    • Leer los metadatos de los ficheros
    • Leer imágenes
    • Leer ficheros PDF
    • Leer documentos Word
    • Escanear un documento en busca de una palabra clave

  • 'Generating Fantastic Records': En este caso, lo que nos interesa no es leer información sino generar salidas de datos e informes en todo tipo de formatos. Entre los recursos que se emplean están la herramienta 'Jinja2' que gestiona plantillas aplicando información de contexto, el lenguaje 'Markdown' y el módulo 'mistune' que convierte documentos 'Markdown' en HTML, el ya visto 'python-docx' para manejo de ficheros Word o 'fpdf' para crear ficheros PDF y 'pdf2image' para transformar el PDF en imágenes. Las recetas para todo esa creación de salidas avanzadas son:
    • Crear un informe simple en texto plano
    • Usar plantillas para informes
    • Formatear texto en 'Markdown'
    • Escribir un documento Word básico
    • Dar estilo a un documento Word
    • Generar estructura en un documento Word
    • Escribir un documento PDF simple
    • Estructurar un PDF
    • Agregar informes PDF
    • Marca de agua y encriptado PDF

  • 'Fun With Spreadsheets': Un caso especializado, pero muy util de tratamiento de ficheros: las hojas de cálculo tanto en su versión más básica, ficheros CSV, como con las aplicaciones más populares como Excel y LibreOffice. Entre los recursos empleados están, de nuevo, el módulo 'csv', y sobre todo 'openpyxl' para abrir y actualizar ficheros Excel. Las recetas para el tratamiento de hojas de cálculo que se proponen son:
    • Escribir una hoja de cálculo CSV
    • Actualizar ficheros CSV
    • Leer una hoja de cálculo Excel
    • Actualizar una hoja de cálculo Excel.
    • Crear nuevas hojas en un libro Excel
    • Crear gráficos en Excel
    • Trabajar con los formatos de celdas en excel
    • Crear una macro en LibreOffice

  • 'Cleaning And Processing Data': Se trata ahora de una de las labores más desagradecidas, pero quizá más importantes, cuando se va a trabajar con datos, especialmente datos procedentes de diferentes fuentes: su limpieza y preprocesado de manera que sean aptos para su uso posterior en gráficos, cálculos o análisis. Se emplean recursos ya vistos como el módulo 'parse' o 'delorean' y alguna idea nueva como los denominados 'futures' o la librería 'pandas' para análisis de datos. Para ese procesamiento de datos se nos proponen las siguientes recetas:
    • Preparar una hoja de cálculo CSV
    • Añadir moneda con base en localización
    • Estandarizar el formato de fecha
    • Agregar resultados
    • Procesar datos en paralelo
    • Procesar datos con Pandas

  • 'Developing Stunning Graphs': Se muestran técnicas para la visualización de datos de una manera entendible y atractiva. Se apoya mucho en la librería 'matpotlib' y también 'Fiona' para importar información GIS. Y la creación de gráficos se ilustran mediante las siguientes recetas:
    • Dibujar un gráfico de ventas sencillo
    • Dibujar barras apiladas
    • Dibujar tartas
    • Visualizar líneas múltiples
    • Dibujar un diagrama de dispersión
    • Visualizar mapas
    • Añadir leyendas y anotaciones
    • Combinar gráficos
    • Guardar gráficos

  • 'Dealing With Communication Channels': Explica cómo automatizar algunas tareas que implican comunicación con el exterior mediante medios como el correo electrónico, los SMS o las aplicaciones de mensajería. Se usan recursos como el módulo 'smtplib', 'imaplib' y 'email' para el manejo del correo electrónico, el API de la herramienta MailChimp todavía para correos o 'twilio' para manejo de SMSs o el API 'BotFather' de Telegram. Y con ese bagaje se proponen estas recetas:
    • Trabajar con plantillas de correo electrónico
    • Enviar un correo electrónico individual
    • Leer un correo electrónico
    • Añadir suscriptres a una newsletter
    • Enviar notificaciones vía correo electrónico
    • Producir mensajes SMS
    • Recibir SMS
    • Crear un bot Telegram

  • 'Why Not Automate Your Marketing Campaigns': Este capítulo da un cierto salto, porque en lugar de tratar recetas de automatización más o menos generalistas, ahora ataca un escenaro de negocio: la automatización de campañas de marketing. Se vuelven a utilizar recursos ya vistos pero se añade alguno nuevo como 'hashlib' para generación de hash. Para llevarlas a cabo, se nos cuentan las siguientes recetas que, en su conjunto, desarrollan el escenario de ejemplo propuesto:
    • Detectar oportunidades
    • Crear códigos de cupón personalizados
    • Enviar una notificación a un cliente en su canal preferido
    • Preparar la información de ventas
    • Generar un informe de ventas

  • 'Machine Learning For Automation': Se introduce ya en un uso avanzado: el empleo de Machine Learning en automatización, basándose sobre todo en el empleo de servicios de Google Cloud Platform y con recetas como:
    • Analizar imágenes con Google Cloud Vision AI
    • Extraer texto de imágenes con Google Cloud Vision AI
    • Analizar texto con Google Cloud Natural Language
    • Crear tu propio modelo personalizado de machine learning para clasificartexto

  • 'Automatic Testing Routines': Y este capítulo y el siguiente, los dos últimos, son otro pequeño cambio de tercio porque se concentran en automatizaciones relacionadas con el propio desarrollo de software. En este primer capítulo tratando la automatización de pruebas y, en el siguiente, la depuración. En este capítulo se usan como recurso la librería 'pytest' para definir y ejecutar pruebas, la librería 'mock' para acciones ficticias y el módulo 'responses' complementario del 'requests'. En lo relativo a la automatización de rutinas de prueba, se tratan las siguientes recetas:
    • Escribir y ejecutar casos de prueba
    • Probar un código externo
    • Probar usando dependencias ficticias ('mock')
    • Probar unsando llamadas HTTP ficticias
    • Preparar escenarios de prueba
    • Ejecutar pruebas de forma selectiva

  • 'Debugging Techniques': Capítulo final con recetas y ayudas para depurar código Python. Se apoya en recursos como el módulo 'pprint' para crear salidas enriquecidas y, sobre todo, el debugger 'pdb'. Se nos ofrecen, en concreto, cuatro recetas:
    • Aprender los fundamentos del intérprete Python
    • Depurar a travñes de trazas ('logs')
    • Depurar con puntos de parada
    • Mejorar tus habilidades de depuración.
'Python Automation Cookbook' es, sin lugar a dudas, un libro pensado para desarrolladores, que habla su idioma y les transmite muchos conocimientos que juzgo muy interesantes para aplicación práctica. Además, es una forma diferente de entender qué es y cómo se hace Automatización Robótica de Procesos, en esta ocasión no desde el alto nivel que ofrecen las herramientas comerciales sino desde el interior, desde la forma en que la puede hacer un desarrollador en este caso trabajando con Python. 

Un gran recurso para desarrolladores, en mi opinión. 

Jaime Buelta

(Fuente: Traducción y ligera elaboración propia de su ficha de autor en Packt

Jaime Buelta
Jaime Buelta es un desarrollador a tiempo completo desde 2010 y un conferenciante habitual en PyCon Irlanda. Ha sido programador profesional durante más de dos décadas con una rica exposición a una gran cantidad de tecnologías diferentes a lo largo de su carrera. Ha desarrollado software para una variedad de campos y sectores, incluyendo aeroespacial, redes y comunicaciones, sistemas SCADA industriales, servicios de videojuegos online y servicios financieros.

Puedes saber más del autor visitando su página Wrong side of Memphis o siguiéndole en Twitter donde se identifica como @jaimebuelta.

Ficha técnica:

AUTOR: Jaime Buelta
EDITORIAL: Packt Publishing
AÑO: 2020 
ISBN: 978-0982368169
PAGINAS: 526

3 comentarios: