bellazuppa

Python BeautifulSoup Tutorial per principianti

Python BeautifulSoup Tutorial per principianti
Il web scraping è di grande importanza nel mondo di oggi. Tutti hanno bisogno di dati, da diverse fonti comprese le pagine web web. In questo articolo, vedremo come analizzare l'html con la libreria beautifulsoup. Estrarre i dati necessari da un mucchio di alfabeti e simboli, grazie a questa fantastica libreria, è diventato molto più semplice. BeautifulSoup scritto in Python può essere facilmente installato sulla tua macchina usando lo strumento di installazione pip di Python. Il seguente comando aiuterebbe a installare la libreria:

pip install BeautifulSoup4

Per verificare se l'installazione è andata a buon fine, attiva la shell interattiva Python e importa BeautifulSoup. Se non viene visualizzato alcun errore, significa che è andato tutto bene.  Se non sai come procedere, digita i seguenti comandi nel tuo terminale.

$ pitone
Pitone 3.5.2 (predefinito, 14 settembre 2017, 22:51:06)
[CGC 5.4.0 20160609] su linux
Digita "aiuto", "copyright", "crediti" o "licenza" per ulteriori informazioni.
>>> importa bs4

Per lavorare con la libreria BeautifulSoup, devi passare in html. Quando si lavora con siti Web reali, è possibile ottenere l'html di una pagina Web utilizzando la libreria delle richieste. L'installazione e l'uso della libreria delle richieste va oltre lo scopo di questo articolo, tuttavia potresti orientarti nella documentazione è abbastanza facile da usare. Per questo articolo, useremo semplicemente html in una stringa python che chiameremo html.

html = """

Profilo dei dipendenti



Nome:Il dottor Peter Parker

Lavoro:Ingegnere dell'apprendimento automatico

Telefono:+12345678910





"""

Per utilizzare beautifulsoup, lo importiamo nel codice utilizzando il codice seguente:

da bs4 import BeautifulSoup

Ciò introdurrebbe BeautifulSoup nel nostro spazio dei nomi e potremmo usarlo per analizzare la nostra stringa.

zuppa = BeautifulSoup(html, "lxml")

Adesso, la minestra è un oggetto BeautifulSoup di tipo bs4.BeautifulSoup e possiamo arrivare a eseguire tutte le operazioni di BeautifulSoup sul la minestravariabile.

Diamo un'occhiata ad alcune cose che possiamo fare con BeautifulSoup ora.

FARE IL BRUTTO, IL BELLO

Quando BeautifulSoup analizza l'html, di solito non è nel migliore dei formati. Il distanziamento è piuttosto orribile. I tag sono difficili da trovare. Ecco un'immagine per mostrare come apparirebbero quando si arriva a stampare il la minestra:

Tuttavia, c'è una soluzione a questo. La soluzione dà all'html la spaziatura perfetta, facendo sembrare le cose belle. Questa soluzione è giustamente chiamata "abbellire“.

Certo, potresti non riuscire a utilizzare questa funzione per la maggior parte del tempo; tuttavia ci sono momenti in cui potresti non avere accesso allo strumento di ispezione degli elementi di un browser web. In quei tempi di risorse limitate, troverai molto utile il metodo prettify.

Ecco come lo usi:

la minestra.abbellire()

Il markup apparirà correttamente distanziato, proprio come nell'immagine qui sotto:

Quando applichi il metodo prettify sulla zuppa, il risultato non è più un tipo bs4.bellazuppa. Il risultato è ora di tipo 'unicode'. Ciò significa che non puoi applicare altri metodi BeautifulSoup su di esso, tuttavia la zuppa stessa non è interessata, quindi siamo al sicuro.

TROVARE I NOSTRI TAG PREFERITI

L'HTML è composto da tag. Memorizza tutti i suoi dati al loro interno e in mezzo a tutto quel disordine si trovano i dati di cui abbiamo bisogno. Fondamentalmente, questo significa che quando troviamo i tag giusti, possiamo ottenere ciò di cui abbiamo bisogno.

Quindi, come troviamo i tag giusti?? Utilizziamo i metodi find e find_all di BeautifulSoup.

Ecco come funzionano:

Il trova Il metodo cerca il primo tag con il nome necessario e restituisce un oggetto di tipo bs4.elemento.Etichetta.

Il trova tutto d'altra parte, cerca tutti i tag con il nome del tag necessario e li restituisce come un elenco di tipo bs4.elemento.RisultatoSet. Tutti gli elementi nell'elenco sono di tipo bs4.elemento.Tagga, così possiamo effettuare l'indicizzazione sulla lista e continuare la nostra bella esplorazione di zuppa.

Vediamo un po' di codice. Troviamo tutti i tag div:

la minestra.trova(“div”)

Otterremmo il seguente risultato:

Nome:Il dottor Peter Parker

Controllando la variabile html, noteresti che questo è il primo tag div.

la minestra.find_all(“div”)

Otterremmo il seguente risultato:

[
Nome:Il dottor Peter Parker
,
Lavoro:Ingegnere dell'apprendimento automatico
,
Telefono:+12345678910
,
,
]

Restituisce una lista.  Se ad esempio vuoi il terzo tag div, esegui il seguente codice:

la minestra.find_all(“div“)[2]

Restituirebbe quanto segue:

Telefono:+12345678910

TROVARE GLI ATTRIBUTI DEI NOSTRI TAG PREFERITI

Ora che abbiamo visto come ottenere i nostri tag preferiti, che ne dici di ottenere i loro attributi??

Potresti pensare a questo punto: "Per cosa abbiamo bisogno di attributi??“. Bene, molte volte, la maggior parte dei dati di cui abbiamo bisogno saranno indirizzi e-mail e siti web. Questo tipo di dati è solitamente ipertestuale nelle pagine Web, con i collegamenti nell'attributo "href".

Quando abbiamo estratto il tag necessario, utilizzando i metodi find o find_all, possiamo ottenere attributi applicando attr. Questo restituirebbe un dizionario dell'attributo e il suo valore.

Per ottenere l'attributo email, ad esempio, otteniamo il tag che circondano le informazioni necessarie e fai quanto segue.

la minestra.find_all(“a”)[0].attr

Che restituirebbe il seguente risultato:

'href': 'mailto:[email protected]'

Stessa cosa per l'attributo del sito web.

la minestra.trova_tutto(“un“)[1].attr

Che restituirebbe il seguente risultato:

'href': '
http://pparkerworks.come'

I valori restituiti sono dizionari e la normale sintassi del dizionario può essere applicata per ottenere chiavi e valori.

VEDIAMO GENITORI E FIGLI

Ci sono tag ovunque. A volte, vogliamo sapere cosa sono i tag figli e qual è il tag genitore.

Se non sai già cos'è un tag genitore e figlio, questa breve spiegazione dovrebbe essere sufficiente: un tag genitore è il tag esterno immediato e un bambino è il tag interno immediato del tag in questione.

Dando un'occhiata al nostro html, il tag body è il tag genitore di tutti i tag div. Inoltre, il tag in grassetto e il tag di ancoraggio sono figli dei tag div, ove applicabile poiché non tutti i tag div possiedono tag di ancoraggio.

Quindi possiamo accedere al tag genitore chiamando il trovagenitore metodo.

la minestra.trova("div").trovagenitore()

Ciò restituirebbe l'intero tag body:


Nome:Il dottor Peter Parker

Lavoro:Ingegnere dell'apprendimento automatico

Telefono:+12345678910



Per ottenere il tag children del quarto tag div, chiamiamo il trovaBambini metodo:

la minestra.find_all("div")[4].trova bambini()

Restituisce quanto segue:

[Sito web:, pparkerworks.come]

COSA C'È PER NOI??

Durante la navigazione delle pagine Web, non vediamo tag ovunque sullo schermo. Tutto ciò che vediamo è il contenuto dei diversi tag. E se volessimo il contenuto di un tag, senza che tutte le parentesi angolari rendano la vita scomoda? Non è difficile, non faremmo altro che chiamare get_text metodo sul tag di scelta e otteniamo il testo nel tag e se il tag contiene altri tag, ottiene anche i loro valori di testo.

Ecco un esempio:

la minestra.trova ("corpo").get_text()

Questo restituisce tutti i valori di testo nel tag body:

Nome: dottor Peter Parker
Lavoro: Ingegnere dell'apprendimento automatico
Telefono:+12345678910
E-mail: [e-mail protetta]
Sito web:pparkerworks.come

CONCLUSIONE

Questo è quello che abbiamo per questo articolo. Tuttavia, ci sono ancora altre cose interessanti che si possono fare con beautifulsoup. Puoi controllare la documentazione o usare dir (Bella zuppa) sulla shell interattiva per vedere l'elenco delle operazioni che possono essere eseguite su un oggetto BeautifulSoup. Questo è tutto da me oggi, finché non scriverò di nuovo.

Porte open source di motori di gioco commerciali
Ricreazioni del motore di gioco gratuite, open source e multipiattaforma possono essere utilizzate per riprodurre titoli di giochi vecchi e abbastanza...
I migliori giochi da riga di comando per Linux
La riga di comando non è solo il tuo più grande alleato quando usi Linux, ma può anche essere una fonte di intrattenimento perché puoi usarla per gioc...
Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...