Pitone

Analizzare l'HTML usando Python

Analizzare l'HTML usando Python
L'analisi dell'HTML è una delle attività più comuni eseguite oggi per raccogliere informazioni dai siti Web ed estrarle per vari scopi, come stabilire l'andamento del prezzo di un prodotto nel tempo, recensioni di un libro su un sito Web e molto altro. Esistono molte librerie come BeautifulSoup in Python che astrae così tanti punti dolorosi nell'analisi dell'HTML, ma vale la pena sapere come funzionano effettivamente quelle librerie sotto quel livello di astrazione.

In questa lezione, questo è ciò che intendiamo fare. Scopriremo come estrarre i valori di diversi tag HTML e sovrascriveremo anche la funzionalità predefinita di questo modulo per aggiungere una nostra logica. Lo faremo usando il HTMLParser classe in Python in html.analizzatore modulo. Vediamo il codice in azione.

Guardando la classe HTMLParser

Per analizzare il testo HTML in Python, possiamo usare HTMLParser classe in html.analizzatore modulo. Diamo un'occhiata alla definizione della classe per il HTMLParser classe:

classe html.analizzatore.HTMLParser(*, convert_charrefs=True)

Il convert_charrefs campo, se impostato su True farà convertire tutti i riferimenti ai caratteri nei loro equivalenti Unicode. Solo il sceneggiatura/stile gli elementi non vengono convertiti. Ora proveremo a capire ogni funzione anche per questa classe per capire meglio cosa fa ogni funzione.

Sottoclasse della classe HTMLParser

In questa sezione, sottoclasseremo la classe HTMLParser e daremo un'occhiata ad alcune delle funzioni chiamate quando i dati HTML vengono passati all'istanza della classe. Scriviamo un semplice script che faccia tutto questo:

da html.parser import HTMLParser
classe LinuxHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Incontro tag iniziale:", tag)
def handle_endtag(self, tag):
print("Incontro tag di fine:", tag)
def handle_data(self, data):
print("Dati trovati:", dati)
parser = LinuxHTMLParser()
analizzatore.alimentazione("
'

Modulo di analisi HTML Python


')

Ecco cosa otteniamo indietro con questo comando:

Sottoclasse Python HTMLParser

Funzioni HTMLParser

In questa sezione, lavoreremo con varie funzioni della classe HTMLParser e esamineremo le funzionalità di ciascuna di esse:

da html.parser import HTMLParser
da html.entità import nome2codepoint
class LinuxHint_Parse(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Etichetta iniziale:", etichetta)
per attr in attr:
print("attr:", attr)
def handle_endtag(self, tag):
print("Etichetta di fine:", etichetta)
def handle_data(self, data):
print("Dati:", dati)
def handle_comment(self, data):
print("Commento:", dati)
def handle_entityref(self, nome):
c = chr(nome2codicepunto[nome])
print("Nome ent:", c)
def handle_charref(self, nome):
se nome.inizia con('x'):
c = chr(int(nome[1:], 16))
altro:
c = chr(int(nome))
print("Numero:", c)
def handle_decl(self, data):
print("Decl:", dati)
parser = LinuxHint_Parse()

Con varie chiamate, forniamo dati HTML separati a questa istanza e vediamo quale output generano queste chiamate. Inizieremo con un semplice DOCTYPE corda:

analizzatore.alimentazione(''"http://www.w3.org/TR/html4/strict.dtd">')

Ecco cosa otteniamo con questa chiamata:

Stringa DOCTYPE

Proviamo ora un tag immagine e vediamo quali dati estrae:

analizzatore.alimentazione('Il logo Python')

Ecco cosa otteniamo con questa chiamata:

Tag immagine HTMLParser

Successivamente, proviamo come si comporta il tag script con le funzioni Python:

analizzatore.alimentazione('')
analizzatore.alimentazione('')
analizzatore.feed('#python color: green ')

Ecco cosa otteniamo con questa chiamata:

Tag di script in htmlparser

Infine, passiamo i commenti anche alla sezione HTMLParser:

analizzatore.alimentazione(''
'')

Ecco cosa otteniamo con questa chiamata:

Analisi dei commenti

Conclusione

In questa lezione, abbiamo esaminato come possiamo analizzare l'HTML usando la classe HTMLParser di Python senza altre librerie. Possiamo facilmente modificare il codice per cambiare l'origine dei dati HTML in un client HTTP.

Leggi altri post basati su Python qui.

Rimappa i pulsanti del mouse in modo diverso per software diversi con X-Mouse Button Control
Forse hai bisogno di uno strumento che possa cambiare il controllo del tuo mouse con ogni applicazione che utilizzi. In questo caso, puoi provare un'a...
Recensione del mouse wireless Microsoft Sculpt Touch
Ho letto di recente del Microsoft Scolpisci il tocco mouse wireless e ho deciso di acquistarlo. Dopo averlo usato per un po', ho deciso di condividere...
Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...