Strategie di attesa per pagine dinamiche
Padroneggi le attese esplicite, implicite e fluenti in Selenium, così che il Suo scraper gestisca in modo affidabile i contenuti caricati in modo asincrono.
Strategie di attesa per pagine dinamiche è una lezione Web Scraping & Bots gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Web Scraping & Bots, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Web Scraping & Bots include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
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.
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 12
- Lezioni
- 48
Domande Frequenti
La lezione «Strategie di attesa per pagine dinamiche» è gratuita?
Sì — il testo completo di «Strategie di attesa per pagine dinamiche» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Web Scraping & Bots, passa a CoddyKit PRO. Il corso Web Scraping & Bots include 4 lezioni in totale.
Cosa imparerò in «Strategie di attesa per pagine dinamiche»?
Padroneggi le attese esplicite, implicite e fluenti in Selenium, così che il Suo scraper gestisca in modo affidabile i contenuti caricati in modo asincrono. Eserciti Web Scraping & Bots con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Web Scraping & Bots?
Non è richiesta alcuna esperienza precedente. Web Scraping & Bots su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Strategie di attesa per pagine dinamiche»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Web Scraping & Bots?
Sì. Ogni lezione Web Scraping & Bots include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Introduzione a Selenium
- Automazione delle interazioni con il browser
- Estrazione dei dati da JavaScript
- Strategie di attesa per pagine dinamiche