Individuare e selezionare elementi dalla pagina Web è la chiave per il raschiatura del web con selenio. Per individuare e selezionare elementi dalla pagina Web, è possibile utilizzare i selettori XPath in selenio.
In questo articolo, ti mostrerò come individuare e selezionare elementi dalle pagine Web utilizzando i selettori XPath in selenio con la libreria di selenio Python. Quindi iniziamo.
Prerequisiti:
Per provare i comandi e gli esempi di questo articolo, devi avere,
Per soddisfare i requisiti 4, 5 e 6, leggi il mio articolo Introduzione al selenio in Python 3. Puoi trovare molti articoli sugli altri argomenti su Linuxhint.com. Assicurati di verificarli se hai bisogno di assistenza.
Impostazione di una directory del progetto:
Per mantenere tutto organizzato, crea una nuova directory di progetto selenio-xpath/ come segue:
$ mkdir -pv selenio -xpath/driver
Navigare verso il selenio-xpath/ Directory del progetto come segue:
$ cd selenio-xpath/
Crea un ambiente virtuale Python nella directory del progetto come segue:
$ virtualenv .Venv
Attiva l'ambiente virtuale come segue:
$ fonte .venv/bin/attiva
Installa la libreria di Selenio Python utilizzando PIP3 come segue:
$ PIP3 Installa selenioScarica e installa tutto il driver Web richiesto in autisti/ directory del progetto. Ho spiegato il processo di download e installazione di Web driver nel mio articolo Introduzione al selenio in Python 3.
Ottieni il selettore XPath utilizzando lo strumento di sviluppatore Chrome:
In questa sezione, ti mostrerò come trovare il selettore XPath dell'elemento pagina web che si desidera selezionare con selenio utilizzando lo strumento sviluppatore integrato del browser Web di Google Chrome.
Per ottenere il selettore XPath utilizzando il browser Web di Google Chrome, apri Google Chrome e visita il sito Web da cui si desidera estrarre dati. Quindi, premere il pulsante destro del mouse (RMB) su un'area vuota della pagina e fare clic su Ispezionare per aprire il Strumento per sviluppatori Chrome.
Puoi anche premere + Spostare + IO per aprire il Strumento per sviluppatori Chrome.
Strumento per sviluppatori Chrome dovrebbe essere aperto.
Per trovare la rappresentazione HTML dell'elemento pagina Web desiderato, fare clic su Ispezionare(
) icona, come contrassegnato nello screenshot seguente.
Quindi, passaggi sull'elemento pagina Web desiderato e premi il pulsante sinistro del mouse (LMB) per selezionarlo.
La rappresentazione HTML dell'elemento Web selezionato verrà evidenziata nel Elementi Tab di Strumento per sviluppatori Chrome, Come puoi vedere nello screenshot qui sotto.
Per ottenere il selettore XPath dell'elemento desiderato, selezionare l'elemento dal Elementi scheda di Strumento per sviluppatori Chrome e fare clic con il pulsante destro del mouse (RMB) su di esso. Quindi, seleziona copia > Copia XPath, come contrassegnato nello screenshot seguente.
Ho incollato il selettore XPath in un editor di testo. Il selettore XPath sembra mostrato nello screenshot in basso.
Ottieni il selettore XPath utilizzando lo strumento Firefox Developer:
In questa sezione, ti mostrerò come trovare il selettore XPath dell'elemento pagina web che si desidera selezionare con selenio utilizzando lo strumento sviluppatore integrato del browser Web Mozilla Firefox.
Per ottenere il selettore XPath utilizzando il browser Web Firefox, apri Firefox e visita il sito Web da cui si desidera estrarre dati. Quindi, premere il pulsante destro del mouse (RMB) su un'area vuota della pagina e fare clic su Ispeziona Elemento (Q) per aprire il Strumento per sviluppatori Firefox.
Strumento per sviluppatori Firefox dovrebbe essere aperto.
Per trovare la rappresentazione HTML dell'elemento pagina Web desiderato, fare clic su Ispezionare(
) icona, come contrassegnato nello screenshot seguente.
Quindi, passaggi sull'elemento pagina Web desiderato e premi il pulsante sinistro del mouse (LMB) per selezionarlo.
La rappresentazione HTML dell'elemento Web selezionato verrà evidenziata nel Ispettore scheda di Strumento per sviluppatori Firefox, Come puoi vedere nello screenshot qui sotto.
Per ottenere il selettore XPath dell'elemento desiderato, selezionare l'elemento dal Ispettore scheda di Strumento per sviluppatori Firefox e fare clic con il pulsante destro del mouse (RMB) su di esso. Quindi, seleziona copia > Xpath come contrassegnato nello screenshot seguente.
Il selettore XPath dell'elemento desiderato dovrebbe assomigliare a questo.
Estrazione di dati da pagine Web utilizzando XPath Selector:
In questa sezione, ti mostrerò come selezionare gli elementi della pagina Web ed estrarre dati da loro utilizzando i selettori XPath con la libreria di Selenium Python.
Innanzitutto, crea un nuovo script Python ex01.Py e digitare le seguenti righe di codici.
dal webdriver di import selenioUna volta che hai finito, salva il ex01.Py Script di Python.
La linea 1-3 importa tutti i componenti di selenio richiesti.
La riga 5 crea un oggetto Opzioni Chrome e la riga 6 consente la modalità senza testa per il browser Web Chrome.
La riga 8 crea un cromo browser oggetto usando il Chromedriver binario dal autisti/ directory del progetto.
La riga 10 dice al browser di caricare il sito Web unixtimestamp.com.
La riga 12 trova l'elemento che ha i dati Timestamp dalla pagina utilizzando XPath Selector e lo memorizza nel timestamp variabile.
La riga 13 analizza i dati del timestamp dall'elemento e li stampa sulla console.
Ho copiato il selettore XPath del marcato H2 elemento da UnixTimestamp.com Utilizzando lo strumento di sviluppatore Chrome.
La riga 14 chiude il browser.
Esegui lo script Python ex01.Py come segue:
$ Python3 Ex01.PyCome puoi vedere, i dati Timestamp vengono stampati sullo schermo.
Qui, ho usato il browser.find_element_by_xpath (selettore) metodo. L'unico parametro di questo metodo è il selettore, che è il selettore XPath dell'elemento.
Invece di browser.find_element_by_xpath () Metodo, puoi anche usare browser.find_element (by, selettore) metodo. Questo metodo necessita di due parametri. Il primo parametro Di sarà Di.Xpath Come useremo il selettore XPath e il secondo parametro selettore sarà il selettore XPath stesso. Il risultato sarà lo stesso.
Per vedere come browser.find_element () Il metodo funziona per XPath Selector, crea un nuovo script Python ex02.Py, copiare e incollare tutte le righe da ex01.Py A ex02.Py e cambiare riga 12 come contrassegnato nello screenshot seguente.
Come puoi vedere, lo script Python ex02.Py dà lo stesso risultato di ex01.Py.
$ Python3 Ex02.PyIL browser.find_element_by_xpath () E browser.find_element () I metodi vengono utilizzati per trovare e selezionare un singolo elemento dalle pagine Web. Se si desidera trovare e selezionare più elementi utilizzando i selettori XPath, è necessario utilizzare browser.find_elements_by_xpath () O browser.find_elements () metodi.
IL browser.find_elements_by_xpath () Il metodo prende lo stesso argomento del browser.find_element_by_xpath () metodo.
IL browser.find_elements () Il metodo prende gli stessi argomenti del browser.find_element () metodo.
Vediamo un esempio di estrazione di un elenco di nomi usando il selettore XPath da Generatore di nome casuale.informazioni con la biblioteca di Selenium Python.
L'elenco non ordinato (ol tag) ha un 10 li Tag all'interno di ciascuno contenente un nome casuale. XPath per selezionare tutto il li Tag all'interno del ol Il tag in questo caso è //*[@id = "main"]/div [3]/div [2]/ol // li
Passiamo attraverso un esempio di selezione di più elementi dalla pagina Web utilizzando XPath Selectors.
Crea un nuovo script Python ex03.Py e digitare le seguenti righe di codici in esso.
dal webdriver di import selenioUna volta che hai finito, salva il ex03.Py Script di Python.
La riga 1-8 è la stessa di in ex01.Py Script di Python. Quindi, non li spiegherò di nuovo qui.
La riga 10 indica al browser di caricare il sito-generico casuale del sito Web.informazioni.
La riga 12 seleziona l'elenco dei nomi usando il browser.find_elements_by_xpath () metodo. Questo metodo utilizza il selettore XPath //*[@id = "main"]/div [3]/div [2]/ol // li Per trovare l'elenco dei nomi. Quindi, l'elenco dei nomi è archiviato in nomi variabile.
Nelle righe 13 e 14, a per Loop è usato per iterare attraverso il nomi Elenca e stampa i nomi sulla console.
La riga 16 chiude il browser.
Esegui lo script Python ex03.Py come segue:
$ Python3 Ex03.PyCome puoi vedere, i nomi vengono estratti dalla pagina web e stampati sulla console.
Invece di usare il browser.find_elements_by_xpath () metodo, puoi anche usare il browser.find_elements () metodo come prima. Il primo argomento di questo metodo è Di.Xpath, e il secondo argomento è il selettore XPath.
Per sperimentare browser.find_elements () Metodo, crea un nuovo script Python Ex04.Py, copiare tutti i codici da ex03.Py A Ex04.Py, e modifica la riga 12 come contrassegnato nello screenshot seguente.
Dovresti ottenere lo stesso risultato di prima.
$ Python3 Ex04.PyNozioni di base del selettore XPath:
Lo strumento sviluppatore di Firefox o Google Chrome Web Browser genera automaticamente il selettore XPath. Ma questi selettori XPath a volte non sono sufficienti per il tuo progetto. In tal caso, devi sapere cosa fa un certo selettore XPath per costruire il selettore XPath. In questa sezione, ti mostrerò le basi dei selettori XPath. Quindi, dovresti essere in grado di costruire il tuo selettore XPath.
Crea una nuova directory www/ Nella directory del progetto come segue:
$ mkdir -v www
Crea un nuovo file Web01.html nel www/ directory e digitare le seguenti righe in quel file.
Una volta che hai finito, salva il Web01.html file.
Esegui un semplice server HTTP sulla porta 8080 utilizzando il comando seguente:
$ python3 -m http.Server -directory www/ 8080Il server HTTP dovrebbe iniziare.
Dovresti essere in grado di accedere al Web01.html File usando l'URL http: // localhost: 8080/web01.html, come puoi vedere nello screenshot qui sotto.
Mentre lo strumento Firefox o Chrome Developer viene aperto, premere + F Per aprire la casella di ricerca. Puoi digitare il tuo selettore XPath qui e vedere cosa seleziona molto facilmente. Userò questo strumento in questa sezione.
Un selettore XPath inizia con un file barra (/) La maggior parte delle volte. È come un albero della directory Linux. IL / è la radice di tutti gli elementi nella pagina web.
Il primo elemento è il html. Quindi, il selettore XPath /html Seleziona l'intero html etichetta.
Dentro il html tag, abbiamo un corpo etichetta. IL corpo Il tag può essere selezionato con il selettore XPath /html/corpo
IL H1 L'intestazione è all'interno del corpo etichetta. IL H1 L'intestazione può essere selezionata con il selettore XPath /html/corpo/h1
Questo tipo di selettore XPath è chiamato selettore di percorso assoluto. Nel selettore del percorso assoluto, è necessario attraversare la pagina Web dalla radice (/) della pagina. Lo svantaggio di un selettore del percorso assoluto è che anche una leggera modifica della struttura della pagina web può rendere il tuo selettore XPath non valido. La soluzione a questo problema è un selettore XPath relativo o parziale.
Per vedere come funzionano il percorso relativo o il percorso parziale, crea un nuovo file Web02.html nel www/ directory e digitare le seguenti righe di codici in esso.
Questo è messaggio
Una volta che hai finito, salva il Web02.html File e caricalo nel browser web.
Come puoi vedere, il selettore XPath // div/p Seleziona il P tag all'interno del div etichetta. Questo è un esempio di selettore XPath relativo.
Il selettore XPath relativo inizia con //. Quindi specifichi la struttura dell'elemento che si desidera selezionare. In questo caso, div/p.
COSÌ, // div/p significa selezionare il P elemento all'interno di a div elemento, non importa cosa gli precede.
Puoi anche selezionare elementi con diversi attributi come id, classe, tipo, eccetera. Utilizzando il selettore XPath. Vediamo come farlo.
Crea un nuovo file Web03.html nel www/ directory e digitare le seguenti righe di codici in esso.
Questo è messaggio
Intestazione 2
Lorem ipsum dolor sit Amet Consectur, Adipisicing Elit. Quibusdam
Eligendi Doloribus Sapiente, Molesties Quos QUAE NON NAM INCIDUNT QUIS DELECTUS
Facilis Magni Officeis alias Neque Atque Fuga? Unde, aut natus?
Una volta che hai finito, salva il Web03.html File e caricalo nel browser web.
Supponiamo che tu voglia selezionare tutto il div elementi che hanno il classe nome Container1. Per fare ciò, puoi usare il selettore XPath // div [@class = 'container1']
Come puoi vedere, ho 2 elementi che corrispondono al selettore XPath // div [@class = 'container1']
Per selezionare il primo div elemento con il classe nome Container1, aggiungere [1] Alla fine di XPath Seleziona, come mostrato nello screenshot seguente.
Allo stesso modo, puoi selezionare il secondo div elemento con il classe nome Container1 usando il selettore XPath // div [@class = 'container1'] [2]
Puoi selezionare elementi entro id anche.
Ad esempio, per selezionare l'elemento che ha il id Di Footer-Msg, È possibile utilizzare il selettore XPath //*[@id = 'footer-msg']
Qui, il * Prima [@id = 'footer-msg'] viene utilizzato per selezionare qualsiasi elemento indipendentemente dal loro tag.
Questa è le basi del selettore XPath. Ora, dovresti essere in grado di creare il tuo selettore XPath per i tuoi progetti di selenio.
Conclusione:
In questo articolo, ti ho mostrato come trovare e selezionare elementi dalle pagine Web utilizzando il selettore XPath con la libreria di Selenium Python. Ho anche discusso dei selettori XPath più comuni. Dopo aver letto questo articolo, dovresti sentirti abbastanza sicuro di selezionare elementi dalle pagine Web utilizzando il selettore XPath con la libreria di Selenium Python.