Come eseguire lo scraping di un sito web in JavaScript utilizzando Python

Come fare, Pitone, Scraping, Nov-15-20225 minuti di lettura

I browser web utilizzano Javascript per creare un'esperienza dinamica e interattiva per l'utente. La maggior parte delle applicazioni e delle funzioni che rendono Internet indispensabile per la vita moderna sono codificate sotto forma di Javascript. Considerando le prime incarnazioni di Javascript, le pagine web erano statiche e offrivano una scarsa interazione con l'utente, al di là del clic sui link.

Indice dei contenuti

I browser web utilizzano Javascript per creare un'esperienza dinamica e interattiva per l'utente. La maggior parte delle applicazioni e delle funzioni che rendono Internet indispensabile per la vita moderna sono codificate sotto forma di Javascript. Considerando le prime incarnazioni di Javascript, le pagine web erano statiche e offrivano una scarsa interazione con l'utente, al di là del clic sui link e del caricamento di nuove pagine. 

Di seguito sono riportati alcuni dei miglioramenti dinamici del sito web che vengono eseguiti da Javascript.

  • Convalida dell'input dai moduli web
  • Animazione degli elementi della pagina, come il ridimensionamento, la ricollocazione e la dissolvenza
  • Caricamento di nuovi dati senza ricaricare la pagina
  • Riproduzione di audio e video
  • Riparazione dei problemi di compatibilità del browser

È possibile utilizzare lo scraping per raccogliere dati strutturati dai siti web in modo automatizzato. Lo scraping web è noto anche come estrazione di dati web. Alcuni dei principali casi d'uso del web scraping sono i seguenti:

  • Monitoraggio delle notizie
  • Intelligenza del prezzo
  • Generazione di lead
  • Monitoraggio dei prezzi
  • Ricerca di mercato

Cerchiamo innanzitutto di capire la necessità di effettuare lo scraping dei siti web.

Perché è necessario effettuare lo scraping di un sito web Javascript?

Le aziende utilizzano il web scraping per sfruttare la grande quantità di dati disponibili pubblicamente e prendere decisioni più intelligenti. Di seguito sono riportate alcune delle aree in cui viene utilizzato il web scraping.

  • Commercio elettronico
  • Media sociali
  • Settore bancario 
  • Finanza
  • Marketing 
  • Immobili
  • Finanza
  • Ottimizzazione dei motori di ricerca
  • Contatti di vendita

I motivi per cui le aziende devono effettuare lo scraping dei siti web sono i seguenti.

Automazione - Non è possibile copiare e incollare ogni informazione da un sito web. Le aziende utilizzano software di scraping per automatizzare la maggior parte dei processi associati.

Gestione dei dati - Non è possibile utilizzare database e fogli di calcolo per gestire numeri e cifre su un sito web configurato in HTML. Per questo motivo, le aziende utilizzano strumenti di web scraping per la gestione dei dati.

Annunci immobiliari - Gli agenti immobiliari utilizzano il web scraping per popolare il loro database di proprietà disponibili in affitto o in vendita. 

Dati di confronto dei siti di shopping - Le aziende utilizzano il web scraping per raccogliere i dati sui prezzi e sui prodotti di ciascun rivenditore, in modo da poter fornire ai propri utenti i dati di confronto desiderati. 

Statistiche e approfondimenti di settore - Le aziende utilizzano lo scraping per creare enormi database e trarne approfondimenti specifici per il settore. Ad esempio, un'azienda può raccogliere e analizzare tonnellate di dati sui prezzi del petrolio. Può quindi vendere le proprie conoscenze alle compagnie petrolifere di tutto il mondo.

Scraping di un sito web Javascript con Python

Vediamo come utilizzare Selenium per effettuare lo scrape di siti web Javascript.

Installazione della libreria Selenium

È possibile installare Selenium utilizzando il seguente comando.

pip installa selenium

Installazione del driver Web

Sapete che Selenium simula un vero e proprio browser? Non utilizza l'installazione di chrome, bensì un driver per eseguire un browser. I driver web di Selenium si riferiscono sia ai binding linguistici sia alle implementazioni del codice di controllo del singolo browser. È necessario scaricare il driver web e aggiungerlo alla variabile d'ambiente path. Noi utilizzeremo il driver web di Firefox, che può essere installato seguendo questo link.

Esempio

Consideriamo un semplice esempio di selenium che prevede la raccolta del titolo di un sito web. A tale scopo, per prima cosa importeremo webdriver da selenium in un file python, come mostrato di seguito:

da selenium import webdriver

Si deve indicare il percorso in cui si trova il webdriver. Successivamente, occorre inizializzare il web driver di Firefox.

PERCORSO_WEBDRIVER = './'
driver = webdriver.Firefox(WEBDRIVER_PATH)

Ora definiamo l'URL per ottenere il titolo del sito web.

URL = 'https://www.google.com'
driver.get(URL)
print (driver.title)

L'esecuzione del codice precedente apre una finestra di Firefox che stampa nella console il titolo del sito web. In questo caso abbiamo definito l'URL di Google come esempio, quindi il risultato sarà questo:

Questa è la pagina di google dal driver web di firefox. Il titolo stampato sulla console sarà come:

Dobbiamo chiudere manualmente la finestra di Firefox che è stata aperta. Aggiungeremo driver.quit() alla fine del codice, in modo che la finestra venga chiusa automaticamente al termine del lavoro. 

da selenium import webdriver 

PERCORSO_WEBDRIVER = './'
driver = webdriver.Firefox(WEBDRIVER_PATH) 

URL = 'https://www.google.com'
driver.get(URL)
print (driver.title)
driver.quit()

Se si desidera raccogliere dati da un sito web dinamico, si può seguire la stessa procedura descritta sopra. Per esempio, se si vuole recuperare il titolo di Youtube, si può usare il codice seguente.

da selenium import webdriver 
 
PERCORSO_WEBDRIVER = './' 
driver = webdriver.Firefox(WEBDRIVER_PATH) 
URL = 'https://www.youtube.com'
driver.get(URL)
print (driver.title)
driver.quit()

Proviamo qualcosa di nuovo. Possiamo modificare la casella di ricerca e riempirla con la parola "Selenium", utilizzando la classe "Keys", come mostrato di seguito.

da selenium.webdriver.common.keys import Keys

Dopo aver inizializzato il driver web di Firefox e aver ottenuto il titolo di Youtube, creiamo un oggetto che contiene la casella di ricerca con xpath.

search_box = driver.find_element_by_xpath('//input[@id="search"]]')

Modifichiamo quindi il contenuto della casella di ricerca e lo riempiamo con la parola "Selenium".

search_box.send_keys('Selenium')

Una volta riempita la casella di ricerca con il contenuto desiderato, possiamo premere "Invio" per rendere attiva la ricerca.

casella_di_ricerca.invia_chiavi(chiavi.ENTER)

Nell'immagine sottostante si può notare che la casella di ricerca di Youtube contiene la parola "Selenium".

Utilizzo di un proxy

I proxy sono necessari quando si ha bisogno di contenuti web localizzati. Sono necessari anche quando si inviano troppe richieste a un sito web in un breve periodo di tempo. I proxy per Selenium sono necessari quando è necessario eseguire test automatizzati. Tuttavia, per utilizzare un proxy Selenium per lo scraping di un sito web Javascript, è necessario utilizzare un filo Selenium che estenda i binding di Selenium e dia accesso alle richieste sottostanti effettuate dal browser.

Per utilizzare Selenium con un proxy, è necessario installare il seguente pacchetto.

da selenium wire importa webdriver

Dopo aver installato la libreria Python selenium-wire, è necessario menzionare quanto segue:

  • nome_utente_proxy
  • password_proxy
  • proxy_url
  • porta_proxy

Abbiamo citato un numero di porta casuale 8080 come esempio. È possibile impostare il nome utente, la password e l'URL del sito web desiderato di propria scelta.

proxy_username = "USER_NAME"
proxy_password = "PASSWORD"
proxy_url = "Any Website URL"
proxy_port = 8080

options = {
    "proxy": {
        "http": f"http://{proxy_username}:{proxy_password}@{proxy_url}:{proxy_port}",
        "verify_ssl": False,
    },
}

Per il driver web Selenium, i proxy residenziali sono la scelta migliore. Perché non vengono rilevati facilmente, a differenza dei proxy dei centri di elaborazione dati. Instradano le richieste dei clienti attraverso IP residenziali e guadagnano più fiducia rispetto agli IP dei centri dati. Sono utili anche per accedere a siti web complessi che utilizzano Javascript come Youtube, Google, Instagram ecc.

Perché utilizzare i proxy per lo scraping di un sito web JS

È necessario utilizzare i proxy per lo scraping di un sito web per i seguenti motivi:

  • I proxy sono utilizzati per migliorare la sicurezza e bilanciare il traffico internet di un sito web.
  • I web scrapers devono utilizzare dei proxy per nascondere la loro identità e far sembrare il loro traffico come quello di un utente normale.
  • I proxy vengono utilizzati anche per proteggere i dati personali degli utenti del web.
  • I proxy aiutano ad accedere ai siti web bloccati dal meccanismo di censura del Paese.
  • È possibile effettuare il crawling dei siti web utilizzando i proxy in modo affidabile. 
  • I proxy sono preziosi quando è necessario effettuare lo scraping di dati sui prodotti dai rivenditori online. Infatti, consentono di effettuare la richiesta da una particolare area geografica e di accedere al contenuto specifico visualizzato dal sito web per quella località.
  • I proxy consentono di effettuare un gran numero di richieste al sito web di destinazione senza essere bannati.
  • È possibile utilizzare i proxy per effettuare connessioni simultanee illimitate allo stesso sito web o a siti diversi.

Conclusione

Il web scraping è importante perché può essere utilizzato per:

  • Scraping di annunci di prodotti/servizi e creazione di insight sui loro budget
  • Prevedere le tendenze della moda per rimanere competitivi
  • Scraping dei canali dei social media e scoperta di potenziali clienti, ecc.

In seguito abbiamo discusso di come sia possibile utilizzare Selenium per effettuare lo scraping di siti web con funzionalità Javascript in Python. È possibile eseguire lo scraping del contenuto di siti web statici e di siti web dinamici come Youtube. È inoltre necessario utilizzare i proxy Selenium per i test automatizzati. I migliori proxy che si possono usare sono i proxy residenziali , perché sono superveloci e non possono essere facilmente individuati a differenza di altri proxy.

Spero che abbiate capito come effettuare lo scraping di un sito web Javascript utilizzando Python.