Scripts de automatización en Python con Cerewro
Python es el lenguaje rey de la automatización. Con Cerewro puedes generar scripts completos para procesar datos, generar informes, hacer web scraping, enviar emails automáticos y programar tareas. Sin escribir una línea de código, solo describiendo lo que necesitas.
Procesar CSV y Excel con pandas
Cerewro Chat
Crea un script Python que lea "ventas_2025.csv", agrupe por vendedor y mes, calcule totales y variación respecto al mes anterior, y genere un Excel con gráfico de barras en "informe_ventas.xlsx"
Script generado por Cerewro
import pandas as pd
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
from openpyxl.styles import Font, PatternFill
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def generar_informe(csv_path: str, output_path: str) -> None:
logger.info(f"Leyendo {csv_path}")
df = pd.read_csv(csv_path, parse_dates=['fecha'])
df['mes'] = df['fecha'].dt.to_period('M')
resumen = df.groupby(['vendedor', 'mes'])['ventas'].sum().reset_index()
resumen['variacion'] = resumen.groupby('vendedor')['ventas'].pct_change() * 100
wb = Workbook()
ws = wb.active
ws.title = "Resumen"
# ... escribir datos con formato ...
wb.save(output_path)
logger.info(f"Informe guardado en {output_path}")
if __name__ == "__main__":
generar_informe("ventas_2025.csv", "informe_ventas.xlsx")
Web scraping con BeautifulSoup y requests
Scraping de productos de un e-commerce
Crea un script Python que extraiga nombre, precio y disponibilidad de los primeros 5 páginas de resultados de busqueda y guarde los datos en un CSV con marca de tiempo
Estructura del script de scraping
import requests
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime
import time
def scrape_productos(base_url: str, paginas: int = 5) -> pd.DataFrame:
productos = []
headers = {'User-Agent': 'Mozilla/5.0 ...'}
for pagina in range(1, paginas + 1):
resp = requests.get(f"{base_url}?page={pagina}", headers=headers, timeout=10)
resp.raise_for_status()
soup = BeautifulSoup(resp.text, 'html.parser')
for item in soup.select('.product-card'):
productos.append({
'nombre': item.select_one('.name').text.strip(),
'precio': item.select_one('.price').text.strip(),
'disponible': 'out-of-stock' not in item.get('class', []),
'timestamp': datetime.now().isoformat()
})
time.sleep(1) # respetar el servidor
return pd.DataFrame(productos)
Automatizar envío de emails
Script de email con adjuntos
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import os
def enviar_informe(destinatario: str, archivo: str, asunto: str) -> None:
msg = MIMEMultipart()
msg['From'] = os.getenv('EMAIL_FROM')
msg['To'] = destinatario
msg['Subject'] = asunto
msg.attach(MIMEText("Adjunto encontrarás el informe.", 'plain'))
with open(archivo, 'rb') as f:
part = MIMEBase('application', 'octet-stream')
part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename={os.path.basename(archivo)}')
msg.attach(part)
with smtplib.SMTP_SSL('smtp.gmail.com', 465) as s:
s.login(os.getenv('EMAIL_FROM'), os.getenv('EMAIL_PASS'))
s.send_message(msg)
Programar tareas automáticas con schtasks
Ejecutar script Python todos los días a las 8am
schtasks /create /tn "InformeDiario" /tr "python C:\scripts\informe.py" /sc DAILY /st 08:00 /ru SYSTEM
Entorno virtual siempre: Para scripts programados, activa el entorno virtual explícitamente en el comando:
C:\scripts\.venv\Scripts\python.exe C:\scripts\informe.py. Así te aseguras de usar las dependencias correctas independientemente del Python global del sistema.