Stratégies d’attente pour les pages dynamiques
Maîtrisez les attentes explicites, implicites et fluides dans Selenium afin que votre extracteur gère de manière fiable le contenu chargé de façon asynchrone.
Stratégies d’attente pour les pages dynamiques est une leçon Web Scraping & Bots 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 Web Scraping & Bots, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Web Scraping & Bots comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The Timing Problem
Dynamic pages render content after the initial HTML loads. If your scraper grabs an element before JavaScript injects it, you get a NoSuchElementException or empty data.
Waiting strategies tell Selenium to pause until the page is ready, making automation reliable instead of flaky.
Why Not Just sleep()
A fixed time.sleep(5) is tempting but bad: it wastes time when the page is fast and still fails when the page is slow. Smart waits poll until a condition is true, then continue immediately.
import time
time.sleep(5) # fragile: arbitrary, blocking, often wrongImplicit Waits
An implicit wait sets a global timeout. Selenium retries finding any element for up to that many seconds before failing.
Simple, but it applies to all lookups and cannot wait for arbitrary conditions like visibility or text.
driver.implicitly_wait(10) # seconds, applies globallyExplicit Waits
An explicit wait targets one specific condition. Use WebDriverWait with an expected_conditions check. This is the recommended approach for scraping.
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'results'))
)Common Expected Conditions
The expected_conditions module covers most needs:
presence_of_element_locatedin the DOM.visibility_of_element_locatedis rendered and visible.element_to_be_clickableready for interaction.text_to_be_present_in_elementwaits for content.
EC.visibility_of_element_located((By.CLASS_NAME, 'price'))
EC.element_to_be_clickable((By.ID, 'load-more'))Waiting for Text
When you need a specific value to appear (for example a price loaded by an API call), wait on the text rather than mere presence.
WebDriverWait(driver, 15).until(
EC.text_to_be_present_in_element((By.ID, 'status'), 'Loaded')
)Fluent Waits
A fluent wait lets you tune the polling interval and ignore specific exceptions while waiting. Useful for slow APIs that throw transient errors.
wait = WebDriverWait(driver, timeout=20, poll_frequency=1,
ignored_exceptions=[StaleElementReferenceException])
wait.until(EC.presence_of_element_located((By.ID, 'data')))Handling Stale Elements
If the DOM re-renders, a stored element reference becomes stale. Re-fetch the element inside the wait or after the page settles instead of reusing the old handle.
from selenium.common.exceptions import StaleElementReferenceException
try:
el.click()
except StaleElementReferenceException:
el = driver.find_element(By.ID, 'btn')
el.click()Waiting for Page Load State
You can poll the document's readyState via JavaScript to confirm the whole page finished loading before scraping.
WebDriverWait(driver, 10).until(
lambda d: d.execute_script('return document.readyState') == 'complete'
)Combining Strategies Wisely
Best practice: avoid mixing implicit and explicit waits (they compound unpredictably). Pick explicit waits for scraping, keep timeouts realistic, and wait for the precise condition your data depends on.
A Reliable Pattern
Wrap waits in a helper so every lookup is robust. This keeps your scraping code clean and consistent.
def wait_for(driver, locator, timeout=10):
return WebDriverWait(driver, timeout).until(
EC.visibility_of_element_located(locator)
)
price = wait_for(driver, (By.CLASS_NAME, 'price')).textQuick Check
Test your understanding of waiting strategies.
Recap
You learned to handle asynchronous content with implicit, explicit, and fluent waits, target conditions like visibility and clickability, recover from stale elements, and avoid fragile fixed sleeps.
Reliable waiting is the foundation of stable dynamic-page scraping.
Questions Fréquemment Posées
La leçon « Stratégies d’attente pour les pages dynamiques » est-elle gratuite ?
Oui — le texte complet de « Stratégies d’attente pour les pages dynamiques » 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 Web Scraping & Bots, passe à CoddyKit PRO. Le cours Web Scraping & Bots comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Stratégies d’attente pour les pages dynamiques » ?
Maîtrisez les attentes explicites, implicites et fluides dans Selenium afin que votre extracteur gère de manière fiable le contenu chargé de façon asynchrone. Tu pratiques Web Scraping & Bots 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 Web Scraping & Bots ?
Aucune expérience préalable n'est requise. Web Scraping & Bots 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 « Stratégies d’attente pour les pages dynamiques » ?
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 Web Scraping & Bots ?
Oui. Chaque leçon Web Scraping & Bots 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
- Introduction à Selenium
- Automatiser les interactions avec le navigateur
- Extraire des données de JavaScript
- Stratégies d’attente pour les pages dynamiques