0Pricing
Python Academy · Leçon

Gérer JavaScript et les mesures anti-extraction

Utilisez Playwright ou Selenium pour le contenu rendu par JS et la limitation du débit.

Gérer JavaScript et les mesures anti-extraction est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.

Pourquoi JavaScript est important

Les sites web modernes rendent leur contenu avec JavaScript après le chargement de la page. Les extracteurs de HTML statique comme requests+BS4 voient la structure de base, et non le DOM rendu.

# Static scraper sees:
# <div id="app"></div>

# Rendered page has:
# <div id="app">
#   <h1>Product List</h1>
#   <ul>... dynamically loaded items ...</ul>
# </div>

Playwright pour Python

Playwright contrôle un véritable navigateur (Chromium, Firefox, WebKit) par programmation. Il attend l'exécution de JavaScript avant d'extraire le contenu.

# pip install playwright
# playwright install
import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://example.com")
        title = await page.inner_text("h1")
        print(title)
        await browser.close()

asyncio.run(main())

Attendre les éléments

Utilisez page.wait_for_selector() pour attendre qu'un élément apparaisse dans le DOM avant d'extraire les données.

from playwright.async_api import async_playwright
import asyncio

async def scrape():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://spa-example.com")
        await page.wait_for_selector(".product-list")
        items = await page.query_selector_all(".product-item")
        texts = [await i.inner_text() for i in items]

Selenium

Selenium est une bibliothèque plus ancienne d'automatisation de navigateur. Playwright est préféré pour les nouveaux projets grâce à une meilleure prise en charge de l'asynchrone et à sa rapidité.

# pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://example.com")
elem = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "h1"))
)
print(elem.text)
driver.quit()

Mode sans interface graphique

Exécutez les navigateurs en mode sans interface graphique (sans fenêtre visible) pour l'extraction de données côté serveur.

from playwright.async_api import async_playwright
import asyncio

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=True)  # no window
        page = await browser.new_page()
        await page.goto("https://example.com")
        html = await page.content()
        await browser.close()

Intercepter les requêtes réseau

Playwright peut intercepter et simuler les requêtes réseau, ce qui est utile pour bloquer les publicités et les traceurs ou capturer directement les réponses des interfaces de programmation.

from playwright.async_api import async_playwright
import asyncio

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()

        await page.route("**/*.{png,jpg,css}", lambda route: route.abort())
        await page.goto("https://example.com")   # loads 3x faster

Limitation du débit et délais

Imitez le comportement humain : ajoutez des délais aléatoires entre les requêtes et limitez le débit pour éviter de déclencher les systèmes anti-robot.

import time, random

def polite_scrape(urls):
    for url in urls:
        fetch(url)
        time.sleep(random.uniform(1, 3))  # 1-3 s random delay

Rotation des agents utilisateur

Faites varier les chaînes User-Agent pour éviter un blocage fondé sur l'agent utilisateur UA par défaut de l'extracteur.

import requests, random

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
]

def fetch(url):
    return requests.get(url, headers={"User-Agent": random.choice(USER_AGENTS)})

Cookies et sessions

Conservez les cookies de session pour rester connecté entre les requêtes. La session de requests et Playwright gèrent tous deux automatiquement les cookies.

import requests

with requests.Session() as s:
    s.post("https://example.com/login", data={"user":"me","pass":"pw"})
    # session cookie kept automatically:
    dashboard = s.get("https://example.com/dashboard")

CAPTCHA et considérations juridiques

Les CAPTCHA sont des mesures anti-robot. Les résoudre par programmation est techniquement possible (2captcha, anti-captcha), mais soulève des questions éthiques et juridiques. Consultez toujours le fichier robots.txt et les conditions d'utilisation du site avant d'en extraire des données.

# Before scraping:
# 1. Check robots.txt: https://example.com/robots.txt
# 2. Review the Terms of Service for "scraping" or "automated access" clauses
# 3. Only scrape public data
# 4. Honour Crawl-delay directives
# 5. Cache responses to avoid repeated hits

Captures d'écran et PDF avec Playwright

Playwright peut prendre des captures d'écran ou imprimer des pages au format PDF — ce qui est utile pour les tests visuels et l'archivage.

from playwright.async_api import async_playwright
import asyncio

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("https://example.com")
        await page.screenshot(path="page.png", full_page=True)
        await page.pdf(path="page.pdf")
        await browser.close()

Vérification rapide

Pourquoi requests et BeautifulSoup échouent-ils sur de nombreux sites web modernes ?

Récapitulatif

Utilisez Playwright ou Selenium pour les pages rendues avec JavaScript. Exécutez-les en mode sans interface graphique sur les serveurs. Ajoutez des délais et faites varier les agents utilisateur pour éviter les blocages. Interceptez les requêtes réseau pour bloquer les traceurs. Respectez toujours robots.txt et les conditions d'utilisation.

Questions Fréquemment Posées

La leçon « Gérer JavaScript et les mesures anti-extraction » est-elle gratuite ?

Oui — le texte complet de « Gérer JavaScript et les mesures anti-extraction » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Gérer JavaScript et les mesures anti-extraction » ?

Utilisez Playwright ou Selenium pour le contenu rendu par JS et la limitation du débit. Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Python Academy ?

Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Gérer JavaScript et les mesures anti-extraction » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?

Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Requêtes HTTP avec requests et httpx
  2. Analyser du HTML avec BeautifulSoup
  3. Créer un spider Scrapy
  4. Gérer JavaScript et les mesures anti-extraction
← Retour à Python Academy