Una plataforma de código bajo que combina la simplicidad sin código con el poder del código completo 🚀
Empieza ahora gratis
Marzo 2, 2025
10
min leer

Navegador sin interfaz gráfica para Python: las mejores bibliotecas para la automatización

George Miloradovich
Investigador, redactor y entrevistador de casos prácticos
Tabla de contenidos.

Los navegadores sin interfaz gráfica te permiten automatizar tareas web sin mostrar una ventana visible del navegador. Son más rápidos, utilizan menos recursos y son ideales para realizar pruebas, extraer datos de la web y mucho más. Python ofrece varias bibliotecas para la automatización de navegadores sin interfaz gráfica, cada una con ventajas únicas:

  • Selenio (2004): Funciona con múltiples navegadores, ecosistema maduro, ideal para sistemas heredados.
  • Dramaturgo (2020): Soporte moderno y asincrónico, rápido e ideal para aplicaciones web modernas.
  • pipetero (2017): Ligero, Chromium-Solo, ideal para scripts rápidos.
  • Solicitudes-HTML:Simple, rápido y lo mejor para extraer contenido estático.

Comparacion rapida

Feature Selenio Dramaturgo pipetero Solicitudes-HTML
Soporte del navegador Chrome, Firefox, Internet Explorer cromo, firefox, WebKit Solo cromo Cromo (para JS)
Soporte asincrónico No No
El uso de recursos Alta Mediana Mediana Baja
La mejor opción para Sistemas legados Aplicaciones web modernas Guiones rápidos Contenido estático

Si necesita una amplia compatibilidad con navegadores, elija Selenium. Para aplicaciones modernas y un mejor rendimiento, Playwright es una mejor opción. Pyppeteer es ideal para tareas rápidas, mientras que Requests-HTML se destaca en el scraping estático liviano. Elija el que se ajuste a las necesidades de su proyecto.

¿Qué es un navegador sin interfaz gráfica? ¿Cómo se ejecuta Chrome sin interfaz gráfica?

1. Selenio

Selenio

Selenium, introducido por primera vez en 2004, es una herramienta bien establecida para la automatización del navegador, que ofrece soporte para múltiples navegadores y funciones de automatización avanzadas.

Instalación y configuración

Para comenzar, instale Selenium usando pip:

pip install selenium

Para configurar un navegador Chrome sin interfaz gráfica:

from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)

Compatibilidad y funciones del navegador

Selenium 4 y versiones más nuevas brindan administración automática de WebDriver y compatibilidad con el protocolo WebDriver y Protocolo de Chrome DevTools (CDP). Admite tres navegadores principales en modo sin interfaz gráfica, cada uno con sus puntos fuertes:

Navegador Destacado Mejor caso de uso
Chrome Ejecución rápida, herramientas para desarrolladores Automatización general, web scraping
Firefox Privacidad fuerte, representación confiable Tareas centradas en la seguridad
Southern Implants Integración con Windows, base Chromium Automatización específica de Windows

Optimización del rendimiento

Para mejorar el rendimiento de Selenium, considere estas estrategias:

  • Gestión de Recursos
    Deshabilite recursos innecesarios (como imágenes), establezca tiempos de espera de carga de página y utilice esperas dinámicas para reducir las demoras.
  • Ubicación eficiente de elementos
    Utilice métodos precisos para localizar elementos para una interacción más rápida:
    element = driver.find_element(By.ID, "search-input")
    
  • Gestión de instancias del navegador
    Administre las instancias del navegador con cuidado para evitar el agotamiento de recursos:
    driver.set_page_load_timeout(30)
    driver.quit()  # Clean up resources
    

Características avanzadas

Selenium ofrece varias capacidades avanzadas:

  • Cómo evitar la detección de bots mediante herramientas como Undetected ChromeDriver
  • Prueba de navegador cruzado
  • Control de red para una automatización más profunda
  • Ejecución de JavaScript para interacciones personalizadas

Si bien Selenium puede requerir más configuración en comparación con herramientas como Playwright, su amplio soporte de navegadores y compatibilidad con sistemas más antiguos, incluido Internet Explorer, lo convierten en una opción sólida para proyectos de automatización complejos. Su ecosistema maduro garantiza la confiabilidad para una amplia gama de casos de uso.

2. Dramaturgo

Dramaturgo

Playwright, desarrollado por Microsoft, proporciona una forma rápida y confiable de automatizar navegadores sin interfaz gráfica al comunicarse directamente con el protocolo Chrome DevTools.

Instalación y configuración

Para comenzar a utilizar Playwright, instálelo usando pip y configure los binarios del navegador necesarios:

pip install playwright
playwright install  # Installs browser binaries

He aquí un ejemplo de un script básico:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    # Add your automation tasks here
    browser.close()

Una vez instalado, podrá explorar las capacidades y el rendimiento de Playwright.

Rendimiento y características

Playwright se destaca por utilizar una comunicación eficiente basada en WebSocket, a diferencia de los métodos tradicionales de Selenium. En las pruebas de rendimiento, Playwright completó 100 iteraciones en 290.37 ms, en comparación con los 536.34 ms de Selenium.

Algunas características clave incluyen:

  • Espera automática:Espera automáticamente a que los elementos estén listos, lo que reduce la necesidad de tiempos de espera manuales.
  • Grabación de vídeo:Soporte integrado para grabar sesiones de depuración.
  • Compatibilidad con varios navegadores:Funciona con Chromium, Firefox y WebKit.
  • Contextos de navegador aislados:Garantiza el aislamiento de las pruebas separando las sesiones del navegador.

Comparación de compatibilidad de navegadores

A continuación, se muestra un vistazo rápido a la compatibilidad del modo sin cabeza en todos los navegadores en Playwright:

Navegador Modo sin cabeza
Chromium Habilitado por defecto
Firefox Soportado
WebKit Soportado

BUENAS PRÁCTICAS

Para aprovechar Playwright al máximo, siga estos consejos:

  • Apalancamiento incorporado en espera

En lugar de codificar retrasos, utilice la espera automática de Playwright:

# Avoid time.sleep()
page.wait_for_selector('#element')
  • Utilizar contextos del navegador

Los contextos del navegador proporcionan una pizarra limpia para cada prueba:

context = browser.new_context()
page = context.new_page()
# Perform tasks within this context
context.close()

La gestión adecuada de las instancias del navegador es especialmente importante en entornos con múltiples subprocesos.

Consideraciones sobre el enhebrado

Dado que la API de Playwright no es segura para subprocesos, necesitará una instancia separada para cada subproceso:

def thread_function():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        # Perform thread-specific tasks
        browser.close()

Playwright es ideal para proyectos de automatización web modernos. Sus herramientas de depuración y generador de código pueden ahorrar tiempo a los desarrolladores en comparación con los frameworks más antiguos. Aunque el tamaño de su comunidad (116 283 repositorios de GitHub) es menor que el de Selenium (XNUMX XNUMX repositorios), su rápido crecimiento y el apoyo de Microsoft indican un futuro prometedor.

sbb-itb-23997f1

3. pipetero

pipetero

Pyppeteer es un puerto Python no oficial de Puppeteer, diseñado para automatizar navegadores basados ​​en Chromium. A pesar de su pequeño tamaño, ofrece herramientas potentes para la automatización web.

Instalación y configuración básica

Para utilizar Pyppeteer, necesitará Python 3.6 o posterior. Instálelo a través de pip con los siguientes comandos:

pip install pyppeteer
pyppeteer-install  # Downloads Chromium (~150MB)

A continuación se muestra un script simple que muestra sus funciones asincrónicas:

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.goto('https://example.com')
    await page.screenshot({'path': 'screenshot.png'})
    await browser.close()

asyncio.get_event_loop().run_until_complete(main())

Perspectivas de rendimiento

Las pruebas indican que Pyppeteer funciona aproximadamente un 30 % más rápido que Playwright para guiones más cortos. Su diseño asincrónico también lo hace eficiente al manejar múltiples tareas al mismo tiempo.

Características y limitaciones principales

Feature Detalles
Soporte del navegador Solo cromo
Soporte asincrónico Incorporado
Representación de JavaScript Totalmente apoyado
Uso de la memoria Más bajo en comparación con Selenium
Tamaño de la instalación Compacto (~150 MB con Chromium)
Prueba de navegador cruzado No se admite

Consejos para optimizar el rendimiento

Para mejorar el rendimiento de Pyppeteer, reutilice la misma instancia del navegador para múltiples tareas en lugar de abrir nuevas instancias:

browser = await launch()

for task in tasks:
    page = await browser.newPage()
    # Perform operations
    await page.close()
await browser.close()

Este enfoque puede ayudar a reducir la sobrecarga y acelerar sus scripts.

Manejo de errores

Un problema común es el error "Navegador cerrado inesperadamente", que suele deberse a la falta de dependencias de Chromium. pyppeteer-install garantiza que todos los componentes necesarios estén en su lugar.

"Pyppeteer es una herramienta para automatizar un navegador Chromium con código, lo que permite a los desarrolladores de Python obtener capacidades de renderizado de JavaScript para interactuar con sitios web modernos y simular mejor el comportamiento humano". - ZenRows

Dado que solo es compatible con Chromium, Pyppeteer es ideal para proyectos centrados en la automatización y el rastreo web basados ​​en Chrome. Es una excelente opción si las pruebas entre navegadores no son una prioridad.

4. Solicitudes-HTML

Solicitudes-HTML

Requests-HTML es una herramienta liviana para el web scraping que combina la simplicidad de Requests con potentes capacidades de análisis de HTML. Es particularmente rápida y eficiente cuando se trabaja con contenido estático.

Instalación y configuración

Para utilizar Requests-HTML, asegúrese de tener Python 3.6 o una versión posterior. Instálelo con:

pip install requests-html

Si habilita la representación de JavaScript por primera vez, la biblioteca descargará automáticamente Chromium (~150 MB) a su directorio de inicio (~/.pyppeteer/).

Puntos de referencia de rendimiento

Requests-HTML supera a las herramientas basadas en navegador como Selenium en cuanto a velocidad. A continuación, se muestra una comparación de pruebas recientes:

Tipo de operación Solicitudes-HTML Selenio
Solicitudes de API 0.11 s ± 0.01 s 5.16 s ± 0.04 s
Extracción de texto 0.28 s ± 0.01 s 5.32 s ± 0.09 s

Estos datos resaltan cómo Requests-HTML destaca en tareas que requieren respuestas rápidas.

Funciones y capacidades clave

A continuación se muestra un ejemplo rápido de cómo utilizar Requests-HTML:

from requests_html import HTMLSession

session = HTMLSession()
r = session.get('https://example.com')

r.html.links           # Extract all links
r.html.absolute_links  # Extract absolute URLs

# Enable JavaScript rendering
r.html.render()        

Algunas de sus características destacadas incluyen:

  • Selectores CSS (similares a jQuery)
  • Soporte XPath
  • Manejo de redirección automática
  • Agrupación de conexiones
  • Persistencia de cookies
  • Cadenas de agente de usuario simuladas para mayor flexibilidad

Consejos para optimizar el rendimiento

Para obtener el mejor rendimiento:

  • Limite la representación de JavaScript para reducir la sobrecarga de Chromium.
  • Reutilizar objetos de sesión para múltiples solicitudes.
  • Opte por selectores CSS en lugar de XPath para realizar consultas más simples y rápidas.

Limitaciones y casos de uso

Aspecto Detalles
Soporte JavaScript Disponible pero debe estar habilitado explícitamente
Uso de la memoria Bajo para contenido estático; más alto con renderizado JS
Autenticación Requiere configuración manual
Manejo de CAPTCHA Funcionalidad limitada

"Utilice solicitudes si necesita una forma rápida, liviana y confiable de obtener contenido web estático o datos API". - Joseph McGuire

Requests-HTML es ideal para tareas en las que la velocidad y la eficiencia de los recursos son fundamentales. Por ejemplo, extraer datos de páginas web estáticas lleva solo milisegundos, en comparación con varios segundos que requieren herramientas como Selenium.

Optimización de recursos

Requests-HTML minimiza el uso de ancho de banda al cargar solo los recursos que solicita. Esto puede reducir significativamente los costos de proxy para proyectos que dependen de modelos de precios basados ​​en el ancho de banda. Su diseño eficiente no solo acelera la ejecución, sino que también reduce el consumo de recursos.

Para proyectos centrados en contenido estático, Requests-HTML ofrece una solución ágil y eficiente en comparación con herramientas de automatización de navegadores más pesadas. Esto lo convierte en una opción sólida en escenarios donde la velocidad y el ahorro de recursos son prioridades.

Cuadro comparativo de bibliotecas

A continuación se muestra una comparación detallada de las bibliotecas de navegadores sin interfaz gráfica de Python en función de sus características, rendimiento y eficiencia de recursos.

Funciones y capacidades principales

Feature Selenio Dramaturgo pipetero Solicitudes-HTML
Soporte del navegador Chrome, Firefox, Safari, Internet Explorer Chrome, Firefox, WebKit Solo cromo Cromo (para JS)
Soporte JavaScript Full Full Full Limitada
Soporte asincrónico No No
Complejidad de instalación Alto (se necesita WebDriver) Mediana Mediana Baja
El uso de recursos Alta Mediana Mediana Baja
Tamaño de la comunidad Más de 283 repositorios Más de 116 repositorios Moderado Pequeña

Estas características proporcionan una instantánea de las fortalezas y limitaciones de cada biblioteca, preparando el escenario para un análisis más profundo.

Puntos de referencia de rendimiento

Las pruebas comparativas resaltan las diferencias clave en el rendimiento:

Operación Dramaturgo Selenio pipetero
Tiempo de ejecución 290.37ms 536.34ms ~ 203 ms
Intensidad de recursos Mediana Alta Mediana
Uso de la memoria Moderado Alta Moderado

Playwright y Pyppeteer muestran tiempos de ejecución más rápidos en comparación con Selenium, y Pyppeteer lidera el rendimiento de guiones cortos.

Funciones de desarrollo y depuración

Las herramientas de depuración y el soporte de desarrollo varían enormemente entre estas bibliotecas:

Feature Selenio Dramaturgo pipetero Solicitudes-HTML
Herramientas de depuración Basic Advanced Basic Limitada
Funciones de espera automática Manual Incorporado Basic XNUMX tabletas
Soporte multiplataforma Limitada
Soporte Técnico Comunidad Documentación + Comunidad Limitada Basic

Playwright se destaca por sus herramientas de depuración avanzadas y funciones de espera automática integradas, lo que lo hace ideal para proyectos complejos.

Optimización de casos de uso

Diferentes bibliotecas sobresalen en escenarios específicos:

Caso de uso Biblioteca recomendada ¿Por Qué
Sistemas legados Selenio Amplia compatibilidad con navegadores
Aplicaciones web modernas Dramaturgo Compatibilidad asincrónica y ejecución más rápida
Contenido estático Solicitudes-HTML Ligero y eficiente
Guiones rápidos pipetero Ejecución rápida y funciones equilibradas.

Cada biblioteca tiene su nicho, dependiendo de los requerimientos del proyecto.

Eficiencia de recursos

El uso de recursos varía significativamente entre las bibliotecas:

Biblioteca Uso de CPU Huella de memoria Eficiencia del ancho de banda
Selenio Alta Alta Moderado
Dramaturgo Mediana Mediana Alta
pipetero Mediana Mediana Alta
Solicitudes-HTML Baja Baja Muy Alta

Para contenido estático, Requests-HTML es el más eficiente, mientras que Playwright equilibra el rendimiento y el uso de recursos para aplicaciones dinámicas.

Pyppeteer supera a Playwright en la ejecución de guiones cortos, ya que se ejecuta casi un 30 % más rápido. Sin embargo, la compatibilidad más amplia de Playwright con los navegadores y las herramientas de depuración avanzadas lo convierten en una mejor opción para tareas más exigentes a nivel empresarial.

¿Qué biblioteca debería elegir?

La selección de la biblioteca de navegador sin interfaz gráfica adecuada depende de sus necesidades de automatización específicas y de su configuración técnica. En función de las comparaciones anteriores, puede decidir de la siguiente manera.

Si estás trabajando con aplicaciones web modernasPlaywright es una opción sólida. Superó a Selenium en las pruebas comparativas, completando tareas en solo 290.37 milisegundos en comparación con los 536.34 milisegundos de Selenium. Su soporte asincrónico y sus herramientas de depuración avanzadas lo hacen ideal para manejar tareas de automatización complejas.

Para sistemas empresariales o heredadosSelenium es una opción confiable. Con más de 283,000 XNUMX repositorios de GitHub dedicados a él, Selenium ofrece una gran cantidad de recursos comunitarios, compatibilidad con navegadores más antiguos como Internet Explorer y automatización real de dispositivos.

Para entornos con recursos limitados, aquí hay una guía rápida:

Tipo de entorno Biblioteca recomendada Ventaja clave
Contenido estático Solicitudes-HTML Uso reducido de recursos
Contenido dinámico pipetero Ligero con operaciones asincrónicas

In Configuraciones de integración continua (CI)Playwright se destaca. Se integra sin problemas con plataformas como GitHub Actions, admite pruebas paralelas y ayuda a reducir las pruebas inestables, lo que lo convierte en una excelente opción para los procesos de CI/CD.

En última instancia, su elección debe centrarse en sus objetivos de automatización. Playwright es excelente para la automatización web moderna, mientras que Selenium ofrece una compatibilidad más amplia con navegadores y opciones de prueba en dispositivos reales.

Blog y artículos

Blogs relacionados

Caso de uso

Respaldado por