Une plateforme low-code alliant la simplicité du no-code à la puissance du full-code 🚀
Commencez gratuitement
2 mars 2025
10
min lire

Navigateur Python Headless : les meilleures bibliothèques pour l'automatisation

Georges Miloradovitch
Chercheur, rédacteur et intervieweur de cas d'utilisation
Table des matières

Les navigateurs headless vous permettent d'automatiser les tâches Web sans afficher de fenêtre de navigateur visible. Ils sont plus rapides, utilisent moins de ressources et sont parfaits pour le scraping Web, les tests, etc. Python propose plusieurs bibliothèques pour l'automatisation des navigateurs headless, chacune avec des atouts uniques :

  • Sélénium (2004) : Fonctionne avec plusieurs navigateurs, écosystème mature, idéal pour les systèmes hérités.
  • Dramaturge (2020) : Support moderne, asynchrone, rapide et idéal pour les applications Web modernes.
  • Fantomime (2017) : Léger, Chromium-uniquement, idéal pour les scripts rapides.
  • Requêtes-HTML:Simple, rapide et idéal pour le scraping de contenu statique.

Comparaison rapide

Fonctionnalité Sélénium Dramaturge Fantomime Requêtes-HTML
Support du navigateur Chrome, Firefox, IE Chrome, Firefox, WebKit Chrome uniquement Chrome (pour JS)
Prise en charge asynchrone Non Oui Oui Non
L'utilisation des ressources Haute Moyenne Moyenne Faible
Idéal pour Systèmes Applications Web modernes Scripts rapides Contenu statique

Si vous avez besoin d'une prise en charge étendue du navigateur, optez pour Selenium. Pour des applications modernes et de meilleures performances, Playwright est un meilleur choix. Pyppeteer est idéal pour les tâches rapides, tandis que Requests-HTML excelle dans le scraping statique léger. Choisissez celui qui correspond aux besoins de votre projet.

Qu'est-ce qu'un navigateur headless ? Comment exécuter Headless Chrome ?

1. Sélénium

Sélénium

Selenium, introduit pour la première fois en 2004, est un outil bien établi pour l'automatisation du navigateur, offrant une prise en charge sur plusieurs navigateurs et des fonctionnalités d'automatisation avancées.

Installation et configuration

Pour commencer, installez Selenium en utilisant pip :

pip install selenium

Pour configurer un navigateur Chrome sans tête :

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

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

Prise en charge et fonctionnalités du navigateur

Selenium 4 et les versions plus récentes apportent une gestion automatique de WebDriver et une compatibilité avec le protocole WebDriver et Protocole Chrome DevTools (CDP). Il prend en charge trois principaux navigateurs en mode headless, chacun avec ses points forts :

Navigateur Temps forts Meilleur cas d'utilisation
Chrome Exécution rapide, outils de développement Automatisation générale, scraping Web
Firefox Confidentialité renforcée, rendu fiable Tâches axées sur la sécurité
Edge Intégration Windows, base Chromium Automatisation spécifique à Windows

Optimisation des performances

Pour améliorer les performances de Selenium, envisagez ces stratégies :

  • Gestion des ressources
    Désactivez les ressources inutiles (comme les images), définissez des délais de chargement de page et utilisez des attentes dynamiques pour réduire les délais.
  • Emplacement efficace des éléments
    Utilisez des méthodes précises pour localiser les éléments pour une interaction plus rapide :
    element = driver.find_element(By.ID, "search-input")
    
  • Gestion des instances du navigateur
    Gérez soigneusement les instances du navigateur pour éviter l’épuisement des ressources :
    driver.set_page_load_timeout(30)
    driver.quit()  # Clean up resources
    

Fonctionnalités avancées

Selenium offre plusieurs fonctionnalités avancées :

  • Contourner la détection anti-bot à l'aide d'outils comme Undetected ChromeDriver
  • Tests multi-navigateurs
  • Contrôle du réseau pour une automatisation plus poussée
  • Exécution JavaScript pour les interactions personnalisées

Bien que Selenium puisse nécessiter plus de configuration que des outils comme Playwright, sa prise en charge étendue des navigateurs et sa compatibilité avec les systèmes plus anciens, notamment Internet Explorer, en font un choix solide pour les projets d'automatisation complexes. Son écosystème mature garantit la fiabilité pour un large éventail de cas d'utilisation.

2. Dramaturge

Dramaturge

Playwright, développé par Microsoft, fournit un moyen rapide et fiable d'automatiser les navigateurs sans tête en communiquant directement avec le protocole Chrome DevTools.

Installation et configuration

Pour commencer à utiliser Playwright, installez-le à l'aide de pip et configurez les binaires de navigateur requis :

pip install playwright
playwright install  # Installs browser binaries

Voici un exemple de script de base :

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()

Une fois installé, vous pouvez explorer les capacités et les performances de Playwright.

Performances et fonctionnalités

Playwright se distingue par l'utilisation d'une communication efficace basée sur WebSocket, contrairement aux méthodes traditionnelles de Selenium. Lors des tests de performance, Playwright a effectué 100 itérations en 290.37 ms, contre 536.34 ms pour Selenium.

Certaines fonctionnalités clés incluent:

  • Attente automatique: Attend automatiquement que les éléments soient prêts, réduisant ainsi le besoin de délais d'attente manuels.
  • Enregistrement video:Prise en charge intégrée de l'enregistrement des sessions de débogage.
  • Prise en charge de plusieurs navigateurs:Fonctionne avec Chromium, Firefox et WebKit.
  • Contextes de navigateur isolés: Assure l'isolement des tests en séparant les sessions du navigateur.

Comparaison de la prise en charge des navigateurs

Voici un aperçu rapide de la prise en charge du mode sans tête dans les navigateurs dans Playwright :

Navigateur Mode sans tête
Chromium Activé par défaut
Firefox Appareils
WebKit Appareils

Pratiques d'excellence

Pour tirer le meilleur parti de Playwright, suivez ces conseils :

  • Tirer parti de l'attente intégrée

Au lieu de coder en dur les délais, utilisez l'attente automatique de Playwright :

# Avoid time.sleep()
page.wait_for_selector('#element')
  • Utiliser les contextes du navigateur

Les contextes du navigateur fournissent une table rase pour chaque test :

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

La gestion appropriée des instances de navigateur est particulièrement importante dans les environnements avec plusieurs threads.

Considérations sur le filetage

Étant donné que l'API de Playwright n'est pas thread-safe, vous aurez besoin d'une instance distincte pour chaque thread :

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

Playwright est particulièrement adapté aux projets d'automatisation Web modernes. Ses outils de débogage et son générateur de code permettent aux développeurs de gagner du temps par rapport aux anciens frameworks. Bien que la taille de sa communauté (116 283 référentiels GitHub) soit inférieure à celle de Selenium (XNUMX XNUMX référentiels), sa croissance rapide et le soutien de Microsoft laissent présager un avenir prometteur.

sbb-itb-23997f1

3. Fantomime

Fantomime

Pyppeteer est un portage Python non officiel de Puppeteer, conçu pour automatiser les navigateurs basés sur Chromium. Malgré sa petite taille, il offre des outils puissants pour l'automatisation Web.

Installation et configuration de base

Pour utiliser Pyppeteer, vous aurez besoin de Python 3.6 ou version ultérieure. Installez-le via pip avec les commandes suivantes :

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

Voici un script simple présentant ses fonctionnalités asynchrones :

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())

Perspectives de performance

Les tests indiquent que Pyppeteer fonctionne environ 30 % plus vite que Playwright pour les scripts plus courts. Sa conception asynchrone le rend également efficace lors de la gestion de plusieurs tâches en même temps.

Principales caractéristiques et limites

Fonctionnalité Plus de détails
Support du navigateur Chrome uniquement
Prise en charge asynchrone Encastré
Rendu JavaScript Entièrement pris en charge
Utilisation de la mémoire Inférieur par rapport au sélénium
Taille d'installation Compact (~150 Mo avec Chromium)
Test multi-navigateurs Non pris en charge

Conseils d'optimisation des performances

Pour améliorer les performances de Pyppeteer, réutilisez la même instance de navigateur pour plusieurs tâches au lieu d'ouvrir de nouvelles instances :

browser = await launch()

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

Cette approche peut aider à réduire les frais généraux et à accélérer vos scripts.

Gestion des erreurs

Un problème courant est l'erreur « Fermeture inattendue du navigateur », qui est souvent causée par des dépendances Chromium manquantes. pyppeteer-install s'assure que tous les composants nécessaires sont en place.

« Pyppeteer est un outil permettant d'automatiser un navigateur Chromium avec du code, permettant aux développeurs Python d'obtenir des capacités de rendu JavaScript pour interagir avec des sites Web modernes et mieux simuler le comportement humain. » - ZenRows

Comme il ne prend en charge que Chromium, Pyppeteer est particulièrement adapté aux projets axés sur le scraping et l'automatisation du Web basés sur Chrome. C'est un excellent choix si les tests multi-navigateurs ne sont pas une priorité.

4. Requêtes-HTML

Requêtes-HTML

Requests-HTML est un outil léger de scraping Web qui combine la simplicité de Requests avec de puissantes capacités d'analyse HTML. Il est particulièrement rapide et efficace lorsque vous travaillez avec du contenu statique.

Installation et configuration

Pour utiliser Requests-HTML, assurez-vous que vous disposez de Python 3.6 ou d'une version ultérieure. Installez-le avec :

pip install requests-html

Si vous activez le rendu JavaScript pour la première fois, la bibliothèque téléchargera automatiquement Chromium (~150 Mo) dans votre répertoire personnel (~/.pyppeteer/).

Benchmarks de Performance

Requests-HTML surpasse les outils basés sur un navigateur comme Selenium en termes de vitesse. Voici une comparaison issue de tests récents :

Type d'opération Requêtes-HTML Sélénium
Requêtes API 0.11s ± 0.01s 5.16s ± 0.04s
Extraction de texte 0.28s ± 0.01s 5.32s ± 0.09s

Ces données mettent en évidence la manière dont Requests-HTML excelle dans les tâches nécessitant des réponses rapides.

Fonctionnalités et capacités clés

Voici un exemple rapide de la façon d'utiliser 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()        

Certaines de ses fonctionnalités remarquables incluent :

  • Sélecteurs CSS (similaires à jQuery)
  • Prise en charge de XPath
  • Gestion automatique des redirections
  • Mise en commun des connexions
  • Persistance des cookies
  • Chaînes d'agent utilisateur simulées pour plus de flexibilité

Conseils d'optimisation des performances

Pour obtenir les meilleures performances :

  • Limitez le rendu JavaScript pour réduire la surcharge de Chromium.
  • Réutiliser les objets de session pour plusieurs requêtes.
  • Optez pour les sélecteurs CSS plutôt que XPath pour des requêtes plus simples et plus rapides.

Limites et cas d'utilisation

Aspect Plus de détails
Prise en charge de JavaScript Disponible mais doit être explicitement activé
Utilisation de la mémoire Faible pour le contenu statique ; plus élevé avec le rendu JS
Authentification Nécessite une configuration manuelle
Gestion du CAPTCHA Fonctionnalité limitée

« Utilisez des requêtes si vous avez besoin d'un moyen rapide, léger et fiable pour récupérer du contenu Web statique ou des données API. » - Joseph McGuire

Requests-HTML est idéal pour les tâches où la rapidité et l'efficacité des ressources sont essentielles. Par exemple, l'extraction de pages Web statiques ne prend que quelques millisecondes, contre plusieurs secondes avec des outils comme Selenium .

Optimisation des ressources

Requests-HTML minimise l'utilisation de la bande passante en chargeant uniquement les ressources que vous demandez. Cela peut réduire considérablement les coûts de proxy pour les projets qui s'appuient sur des modèles de tarification basés sur la bande passante. Sa conception efficace accélère non seulement l'exécution, mais réduit également la consommation de ressources.

Pour les projets axés sur le contenu statique, Requests-HTML offre une solution simple et efficace par rapport aux outils d'automatisation de navigateur plus lourds. Cela en fait un choix judicieux dans les scénarios où la vitesse et les économies de ressources sont des priorités.

Tableau comparatif des bibliothèques

Voici une comparaison détaillée des bibliothèques de navigateur sans tête Python en fonction de leurs fonctionnalités, de leurs performances et de l'efficacité de leurs ressources.

Fonctionnalités et capacités de base

Fonctionnalité Sélénium Dramaturge Fantomime Requêtes-HTML
Support du navigateur Chrome, Firefox, Safari, IE Chrome, Firefox, WebKit Chrome uniquement Chrome (pour JS)
Prise en charge de JavaScript Full Full Full Limité
Prise en charge asynchrone Non Oui Oui Non
Complexité d'installation Élevé (WebDriver requis) Moyenne Moyenne Faible
L'utilisation des ressources Haute Moyenne Moyenne Faible
Taille de la communauté Plus de 283 XNUMX dépôts Plus de 116 XNUMX dépôts Modérée Petite

Ces fonctionnalités fournissent un aperçu des points forts et des limites de chaque bibliothèque, ouvrant la voie à une analyse plus approfondie.

Benchmarks de Performance

Les tests d'évaluation mettent en évidence les principales différences de performances :

Opération Dramaturge Sélénium Fantomime
Temps d'exécution 290.37ms 536.34ms ~203 ms
Intensité des ressources Moyenne Haute Moyenne
Utilisation de la mémoire Modérée Haute Modérée

Playwright et Pyppeteer affichent des temps d'exécution plus rapides par rapport à Selenium, Pyppeteer étant en tête des performances des scripts courts.

Fonctionnalités de développement et de débogage

Les outils de débogage et le support de développement varient considérablement parmi ces bibliothèques :

Fonctionnalité Sélénium Dramaturge Fantomime Requêtes-HTML
Outils de débogage Basic Avancé Basic Limité
Fonctionnalités d'attente automatique Manuel Encastré Basic N/D
Prise en charge multiplateforme Oui Oui Limité Oui
Soutien technique Communauté Documentation + Communauté Limité Basic

Playwright se distingue par des outils de débogage avancés et des fonctionnalités d'attente automatique intégrées, ce qui le rend idéal pour les projets complexes.

Optimisation des cas d'utilisation

Différentes bibliothèques excellent dans des scénarios spécifiques :

Case Study Bibliothèque recommandée Pourquoi Choisir
Systèmes hérités Sélénium Compatibilité étendue avec les navigateurs
Applications Web modernes Dramaturge Prise en charge asynchrone et exécution plus rapide
Article statique Requêtes-HTML Léger et efficace
Scripts rapides Fantomime Exécution rapide et fonctionnalités équilibrées

Chaque bibliothèque a sa niche, en fonction des exigences du projet.

Efficacité des ressources

L’utilisation des ressources varie considérablement selon les bibliothèques :

Bibliothèque L'utilisation du processeur Empreinte mémoire Efficacité de la bande passante
Sélénium Haute Haute Modérée
Dramaturge Moyenne Moyenne Haute
Fantomime Moyenne Moyenne Haute
Requêtes-HTML Faible Faible Très élevé

Pour le contenu statique, Requests-HTML est le plus efficace, tandis que Playwright équilibre les performances et l'utilisation des ressources pour les applications dynamiques.

Pyppeteer surpasse Playwright en matière d'exécution de scripts courts, avec une vitesse d'exécution presque 30 % plus rapide. Cependant, la compatibilité plus large de Playwright avec les navigateurs et ses outils de débogage avancés en font un meilleur choix pour les tâches plus exigeantes au niveau de l'entreprise.

Quelle bibliothèque choisir ?

Le choix de la bibliothèque de navigateur headless appropriée dépend de vos besoins d'automatisation spécifiques et de votre configuration technique. Sur la base des comparaisons ci-dessus, voici comment vous pouvez décider.

Si vous travaillez avec applications Web modernesPlaywright est un choix judicieux. Il a surpassé Selenium dans les tests de performance, en effectuant des tâches en seulement 290.37 millisecondes contre 536.34 millisecondes pour Selenium. Son support asynchrone et ses outils de débogage avancés le rendent parfaitement adapté à la gestion de tâches d'automatisation complexes.

Pour systèmes d'entreprise ou héritésSelenium est une option fiable. Avec plus de 283,000 XNUMX dépôts GitHub qui lui sont dédiés, Selenium offre une multitude de ressources communautaires, une compatibilité avec les navigateurs plus anciens comme Internet Explorer et une automatisation réelle des appareils.

Pour les environnements aux ressources limitées, voici un guide rapide :

Type d'environnement Bibliothèque recommandée Avantage clé
Article statique Requêtes-HTML Faible utilisation des ressources
Contenu dynamique Fantomime Léger avec des opérations asynchrones

In configurations d'intégration continue (CI)Playwright brille. Il s'intègre parfaitement à des plateformes comme GitHub Actions, prend en charge les tests parallèles et contribue à réduire les tests instables, ce qui en fait un outil idéal pour les pipelines CI/CD.

En fin de compte, votre choix doit se concentrer sur vos objectifs d'automatisation. Playwright est excellent pour l'automatisation Web moderne, tandis que Selenium offre une prise en charge plus large des navigateurs et des options de test sur des appareils réels.

À lire également

Blogs connexes

Cas d'utilisation

Soutenu par