Come analizzare e raschiare HTML usando Pyquery

Come analizzare e raschiare HTML usando Pyquery
"Pyquery" è un modulo Python di terze parti che ti consente di analizzare ed estrarre dati da documenti "XML" e "HTML". È ispirato alla libreria jquery javascript e presenta una sintassi quasi identica, che consente di utilizzare molte funzioni di supporto e codice stenografico per analizzare e manipolare l'albero dei documenti. Questo articolo coprirà una semplice guida su Pyquery che ti aiuterà a iniziare con il modulo.

Installazione di Pyquery

Per installare Pyquery in Ubuntu, utilizzare il comando specificato di seguito:

$ sudo apt Installa Python3-Pyquery

Puoi anche installare l'ultima versione di Pyquery da "PIP" Package Manager eseguendo i seguenti due comandi in successione:

$ sudo apt install python3-pip
$ PIP3 Installa Pyquery

Per installare PyQuery in altre distribuzioni Linux, installare "PIP3" dal gestore dei pacchetti ed eseguire il secondo comando sopra menzionato.

Creazione di un albero di documenti parsabile

Prima di poter analizzare ed estrarre dati da un documento HTML, è necessario creare un albero di documenti. È possibile creare un albero di documenti da un semplice markup HTML utilizzando il campione di codice di seguito:

da Pyquery Import Pyquery come PQ
document = pq ("Hello World !!")
Stampa (documento)
Stampa (tipo (documento))

La prima dichiarazione importa la classe "Pyquery" dal modulo "Pyquery". Successivamente, viene creata una nuova istanza di Pyquery Class. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

Ciao mondo !!

Notare la seconda riga nell'output. Qui "documento", che è un'istanza della classe "Pyquery", non restituisce un oggetto tipo stringa. È possibile interrogare rapidamente tutti i metodi disponibili per l'istanza "documento" aggiungendo la seguente riga extra al campione di codice sopra:

da Pyquery Import Pyquery come PQ
document = pq ("Hello World !!")
Stampa (Help (Document))

Puoi anche sfogliare API per la classe Pyquery online.

Per creare un albero di documenti da un URL, utilizzare invece il seguente codice (sostituire "URL" con il proprio indirizzo desiderato):

da Pyquery Import Pyquery come PQ
document = pq (url = 'https: // esempio.com ')
Stampa (documento)

Per creare un file HTML locale del modulo ad albero di documenti, utilizzare il codice seguente (sostituire il valore di "nome file" in base alle tue esigenze):

da Pyquery Import Pyquery come PQ
document = pq (fileName = 'indice.html ')
Stampa (documento)

Ora che hai un albero di documenti, puoi iniziare ad analizzarlo.

Manipolare l'albero del documento

È possibile estrarre dati e manipolare alberi di documenti utilizzando una varietà di metodi. Alcuni dei metodi più comuni sono elencati di seguito con campioni. Per tutti i metodi utilizzabili, consultare l'API disponibile qui.

È possibile utilizzare il metodo "testo" per ottenere il contenuto di testo di un elemento:

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao mondo !!

")
p = documento ('p')
Stampa (p.testo())

Puoi scegliere un tag / elemento specifico fornendo il proprio nome come argomento all'istanza "documento". Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

Ciao mondo !!

Puoi ottenere gli attributi di un tag utilizzando il metodo "ATTR". Per fare ciò, scegli un tag che si desidera analizzare ("p" in questo caso) e fornire il nome dell'attributo come argomento ("id" in questo caso) o utilizzare la notazione dot.

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao mondo !!

")
p = documento ('p')
Stampa (documento)
Stampa (p.attr ("id"), p.ATRT.id)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

Ciao mondo !!

Puoi manipolare CSS usando il metodo "CSS". Per aggiungere stili CSS a

o qualsiasi altro tag, è possibile utilizzare il seguente codice:

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao mondo !!

")
p = documento ('p')
P.css ("color": "rosso")
Stampa (documento)
Stampa (p.attr ("stile"))

Sostituisci la parte "Color": "Red" "con i tuoi stili personalizzati. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output e verificare che CSS sia stato applicato correttamente:

Ciao mondo !!


colore rosso

Se hai una classe pre-stile, puoi semplicemente utilizzare il metodo "AddClass" per applicare gli stili esistenti.

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao mondo !!

")
p = documento ('p')
P.AddClass ("Mystyle")

Puoi aggiungere e preparare il tuo markup personalizzato utilizzando il campione di codice di seguito:

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao mondo !!

")
p = documento ('p')
P.preparare ("

CIAO

")
P.aggiungere("

Ciao

")
Stampa (documento)

Sostituisci gli argomenti nel metodo "prepara" e "aggiungi" con i tuoi valori. Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

CIAO

Ciao mondo !!

Ciao

Per rimuovere il contenuto di un elemento, utilizzare il metodo "vuoto".

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao mondo !!

")
p = documento ('p')
P.vuoto()
Stampa (documento)

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

È possibile utilizzare il metodo "Filtro" per selezionare elementi specifici quando ci sono più tag dello stesso tipo. Ad esempio, il codice seguente raccoglie un "

"Tag che ha un" id "come" ciao ":

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao

Mondo !!

")
p = documento ('p')
Stampa (p.filtro ("#hello")

Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

Ciao

È possibile trovare più tag / elementi contemporaneamente usando il metodo "Trova":

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao

Mondo !!

")
Stampa (documento.trova ('p'))

Fornire il nome tag / elemento come argomento al metodo "Trova". Dopo aver eseguito il campione di codice sopra, è necessario ottenere il seguente output:

Ciao

Mondo !!

È possibile passare da parser "XML" e "HTML" utilizzando un ulteriore argomento "parser":

da Pyquery Import Pyquery come PQ
document = pq ("

Ciao

Mondo !!

", parser =" html ")
Stampa (documento)

Se hai bisogno di ulteriore aiuto con Pyquery, consultare la sua documentazione ufficiale ed esempi disponibili qui.

Conclusione

Pyquery ti consente di analizzare rapidamente i documenti HTML scrivendo codice minimo, in quanto include numerose funzioni di supporto che omettono completamente la necessità di scrivere codice personalizzato. La sua "jQuery" come sintassi e struttura aiuta anche a selezionare elementi e nodi senza approfondire l'albero del documento, specialmente quando c'è un sacco di markup nidificato.