CodeGym /Corso Java /Python SELF IT /Automazione dello scrolling della pagina e navigazione tr...

Automazione dello scrolling della pagina e navigazione tra i link

Python SELF IT
Livello 36 , Lezione 1
Disponibile

1. Scrolling automatico della pagina

Immagina di essere su un feed infinito di un social network, con i contenuti che si caricano pigramente man mano che scrolli. Questo magico scrolling ha un suo API che può essere automatizzato con Selenium.

Metodo execute_script()

Il metodo execute_script() in Selenium permette di eseguire codice JavaScript sulla pagina, ed è uno strumento potente quando si tratta di scrolling. Diamo un’occhiata a come usarlo per scorrere una pagina.

Python

from selenium import webdriver
import time

# Inizializzazione del driver del browser
driver = webdriver.Chrome()

# Apriamo la pagina desiderata
driver.get('https://example.com/scrolling_page')

# Scrolliamo verso il basso
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)  # Aspettiamo che il contenuto si carichi

# Scrolliamo verso l'alto (giusto per cambiare)
driver.execute_script("window.scrollTo(document.body.scrollHeight, 0);")

# Terminiamo la sessione
driver.quit()

In questo script usiamo window.scrollTo() per effettuare lo scrolling della pagina. Gli argomenti (0, document.body.scrollHeight) indicano lo scrolling dall’inizio alla fine della pagina. È una tecnica semplice ed efficace per garantire il caricamento completo di tutti gli elementi dinamici.

Perché è importante?

Usare execute_script() per scorrere una pagina permette di caricare contenuti che inizialmente potrebbero essere nascosti, come quando abbiamo uno scrolling infinito. Questo è particolarmente utile nei social network e nei feed di notizie, dove i contenuti si caricano dinamicamente.

2. Navigazione tra i link

Ora che abbiamo imparato lo scrolling, passiamo alla prossima attività: navigare automaticamente tra i link. Questa è una competenza fondamentale per il web scraping, specialmente quando le informazioni sono distribuite su diverse pagine.

Basi della navigazione tra i link

Per cliccare su un link, possiamo usare il metodo click() sull’elemento selezionato. Vediamo un esempio semplice:

Python

from selenium import webdriver

# Inizializzazione del driver del browser
driver = webdriver.Chrome()

# Apriamo la pagina desiderata
driver.get('https://example.com/links_page')

# Troviamo il link tramite il testo e clicchiamo
link = driver.find_element_by_link_text('Next Page')
link.click()

# Terminiamo la sessione
driver.quit()

In questo esempio, cerchiamo il link tramite il suo testo. Ma che fare se il testo non è unico? In tal caso, possiamo usare metodi più precisi come find_element_by_xpath() o find_element_by_css_selector().

Python

# Trova il link tramite XPath
link = driver.find_element_by_xpath('//a[@href="/next_page"]')
link.click()

Vantaggi della navigazione automatica tra i link

Navigare tra i link con Selenium permette di automatizzare il processo di raccolta dati su pagine con paginazione, o quando i dati sono distribuiti tra diverse sezioni di un sito. Questo è perfetto per scorrere risultati di ricerca o esplorare cataloghi di prodotti su siti di e-commerce.

3. Combinare scrolling e navigazione

Ora immagina di dover scorrere una pagina per trovare un link o un elemento specifico, per poi navigare verso un’altra pagina. Questo è un processo combinato che può essere automatizzato.

Esempio di script combinato

Python

from selenium import webdriver
import time

# Inizializzazione del driver del browser
driver = webdriver.Chrome()

# Apriamo la pagina desiderata
driver.get('https://example.com/scroll_and_click')

# Scrolliamo la pagina per caricare elementi nascosti
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)

# Troviamo e clicchiamo sul link desiderato
link = driver.find_element_by_xpath('//a[text()="Load More"]')
link.click()

# Terminiamo la sessione
driver.quit()

Cosa potrebbe andare storto?

Quando si lavora con pagine dinamiche, a volte gli elementi potrebbero non caricarsi in tempo. In questi casi bisogna utilizzare metodi di attesa per assicurarsi che gli elementi con cui vogliamo interagire siano già disponibili.

Python

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

# Aspetta finché l'elemento non diventi cliccabile
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//a[text()="Load More"]'))
)
element.click()

Usare metodi di attesa aiuta ad evitare errori legati a elementi non pronti, garantendo un funzionamento più stabile dello script.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION