Pitone

Come analizzare e raschiare HTML usando Pyquery

Come analizzare e raschiare HTML usando Pyquery
"Pyquery" è un modulo Python di terze parti che consente di analizzare ed estrarre dati da documenti "xml" e "html". È ispirato alla libreria JavaScript jQuery e presenta una sintassi quasi identica, che consente di utilizzare molte funzioni di supporto e codice abbreviato per analizzare e manipolare l'albero del documento. Questo articolo tratterà una semplice guida su Pyquery che ti aiuterà a iniziare con il modulo.

Installazione di Pyquery

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

$ sudo apt install python3-pyquery

Puoi anche installare l'ultima versione di Pyquery dal gestore di pacchetti "pip" eseguendo i seguenti due comandi in successione:

$ sudo apt install python3-pip
$ pip3 installa pyquery

Per installare Pyquery in altre distribuzioni Linux, installa "pip3" dal gestore pacchetti ed esegui il secondo comando sopra menzionato.

Creazione di un albero di documenti analizzabile

Prima di poter analizzare ed estrarre dati da un documento HTML, è necessario creare un albero del documento. Puoi creare un albero del documento da un semplice markup HTML utilizzando l'esempio di codice riportato di seguito:

da pyquery importa PyQuery come pq
document = pq("Ciao mondo !!")
stampa (documento)
stampa (tipo (documento))

La prima istruzione importa la classe “PyQuery” dal modulo “pyquery”. Successivamente, viene creata una nuova istanza della classe PyQuery. Dopo aver eseguito l'esempio di codice sopra, dovresti ottenere il seguente output:

Ciao mondo !!

Notare la seconda riga nell'output. Qui "document", che è un'istanza della classe "PyQuery", non restituisce un oggetto di tipo stringa. Puoi interrogare rapidamente tutti i metodi disponibili per l'istanza "document" aggiungendo la seguente riga aggiuntiva all'esempio di codice sopra:

da pyquery importa PyQuery come pq
documento = pq("Ciao mondo !!")
stampa (aiuto (documento))

Puoi anche sfogliare l'API per la classe PyQuery online.

Per creare l'albero dei documenti da un URL, utilizzare invece il codice seguente (sostituire "url" con l'indirizzo desiderato):

da pyquery importa PyQuery come pq
documento = pq(url='https://esempio.com')
stampa (documento)

Per creare un albero del documento da un file HTML locale, utilizzare il codice seguente (sostituire il valore di "nome file" in base alle proprie esigenze):

da pyquery importa PyQuery come pq
documento = pq(nomefile='indice.html')
stampa (documento)

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

Manipolazione dell'albero del documento

Puoi estrarre i dati e manipolare gli alberi dei documenti usando una varietà di metodi. Alcuni dei metodi più comuni sono elencati di seguito con i campioni. Per tutti i metodi utilizzabili, fare riferimento all'API disponibile qui.

Puoi usare il metodo "testo" per ottenere il contenuto testuale di un elemento:

da pyquery importa PyQuery come pq
documento = pq("

Ciao mondo !!

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

Puoi scegliere un tag / elemento specifico fornendo il suo nome come argomento all'istanza "document". Dopo aver eseguito l'esempio di codice precedente, dovresti ottenere il seguente output:

Ciao mondo !!

Puoi ottenere gli attributi di un tag usando il metodo "attr". Per fare ciò, scegli un tag che desideri analizzare ('p' in questo caso) e fornisci il nome dell'attributo come argomento ('id' in questo caso) o usa la notazione a punti.

da pyquery importa PyQuery come pq
documento = pq("

Ciao mondo !!

")
p = documento('p')
stampa (documento)
stampa (p.attr("id"), p.attr.id)

Dopo aver eseguito l'esempio di codice precedente, dovresti ottenere il seguente output:

Ciao mondo !!

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

o qualsiasi altro tag, puoi utilizzare il seguente codice:

da pyquery importa PyQuery come pq
documento = pq("

Ciao mondo !!

")
p = documento('p')
p.css("colore": "rosso")
stampa (documento)
stampa (p.attr("stile"))

Sostituisci la parte ""color": "red"" con i tuoi stili personalizzati. Dopo aver eseguito l'esempio di codice sopra, dovresti ottenere il seguente output e puoi verificare che il CSS sia stato applicato correttamente:

Ciao mondo !!


colore rosso

Se hai una classe pre-stilata, puoi semplicemente usare il metodo "addClass" per applicare gli stili esistenti.

da pyquery importa PyQuery come pq
documento = pq("

Ciao mondo !!

")
p = documento('p')
p.addClass("miostile")

Puoi aggiungere e anteporre il tuo markup personalizzato utilizzando l'esempio di codice riportato di seguito:

da pyquery importa PyQuery come pq
documento = pq("

Ciao mondo !!

")
p = documento('p')
p.anteponi("

Ciao

")
p.aggiungere("

Ciao

")
stampa (documento)

Sostituisci gli argomenti nei metodi "prepend" e "append" con i tuoi valori. Dopo aver eseguito l'esempio di codice precedente, dovresti ottenere il seguente output:

Ciao

Ciao mondo !!

Ciao

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

da pyquery importa PyQuery come pq
documento = pq("

Ciao mondo !!

")
p = documento('p')
p.vuoto()
stampa (documento)

Dopo aver eseguito l'esempio di codice precedente, dovresti ottenere il seguente output:

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

" tag con un "id" come "ciao":

da pyquery importa PyQuery come pq
documento = pq("

Ciao

Mondo !!

")
p = documento('p')
stampa (p.filter("#ciao"))

Dopo aver eseguito l'esempio di codice precedente, dovresti ottenere il seguente output:

Ciao

Puoi trovare più tag / elementi contemporaneamente usando il metodo "trova":

da pyquery importa PyQuery come pq
documento = pq("

Ciao

Mondo !!

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

Fornisci il tag / nome dell'elemento come argomento al metodo "find". Dopo aver eseguito l'esempio di codice precedente, dovresti ottenere il seguente output:

Ciao

Mondo !!

Puoi passare da parser "xml" a "html" utilizzando un argomento "parser" aggiuntivo:

da pyquery importa PyQuery come pq
documento = pq("

Ciao

Mondo !!

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

Se hai bisogno di ulteriore aiuto con Pyquery, fai riferimento alla sua documentazione ufficiale e agli esempi disponibili qui.

Conclusione

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

Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...
Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...
Aggiungi i gesti del mouse a Windows 10 utilizzando questi strumenti gratuiti
Negli ultimi anni computer e sistemi operativi si sono notevolmente evoluti greatly. C'è stato un tempo in cui gli utenti dovevano usare i comandi per...