In questa lezione, questo è quello che intendiamo fare. Scopriremo come possono essere estratti i valori di diversi tag HTML e anche sovrascrivere la funzionalità predefinita di questo modulo per aggiungere un po 'di logica. Lo faremo usando il Htmlparser Classe in Python in html.parser modulo. Vediamo il codice in azione.
Guardando la classe htmlparser
Per analizzare il testo HTML in Python, possiamo usare Htmlparser classe in html.parser modulo. Diamo un'occhiata alla Dfinizione di classe per il Htmlparser classe:
Classe HTML.parser.Htmlparser (*, convert_charrefs = true)
IL convert_charrefs campo, se impostato su true farà convertire tutti i riferimenti di personaggi ai loro equivalenti Unicode. Solo il Script/stile Gli elementi non sono convertiti. Ora cercheremo di capire ogni funzione per questa classe e per capire meglio cosa fa ogni funzione.
Def Handle_stantendtag (self, tag, atrs):
se stesso.Handle_starttag (tag, atrs)
se stesso.Handle_endtag (tag)
def handle_starttag (self, tag, atrs):
passaggio
def handle_endtag (self, tag):
passaggio
def handle_charref (self, name):
passaggio
def manding_entyref (self, name):
passaggio
def handle_data (self, dati):
passaggio
def handle_comment (self, dati):
passaggio
def handle_pi (self, dati):
passaggio
def handle_decl (self, decl):
passaggio
Sottoclassando la classe HTMLPARSER
In questa sezione, sottoposeremo la classe HTMLPARSER e daremo un'occhiata ad alcune delle funzioni chiamate quando i dati HTML vengono passati all'istanza della classe. Scriviamo una semplice sceneggiatura che fa tutto questo:
da html.Parser Import htmlparser
Classe LinuxhtmlParser (htmlparser):
def handle_starttag (self, tag, atrs):
Stampa ("Avvia il tag incontrato:", tag)
def handle_endtag (self, tag):
Print ("End Tag incontrato:", tag)
def handle_data (self, dati):
Stampa ("Dati trovati:", dati)
parser = linuxhtmlparser ()
parser.foraggio("
'Modulo di analisi Python HTML
')
Ecco cosa torniamo con questo comando:
Python HtmlParser Sottoclasse
Funzioni htmlparser
In questa sezione, lavoreremo con varie funzioni della classe HTMLPARSER e esamineremo la funzionalità di ciascuno di questi:
da html.Parser Import htmlparser
da html.Entità Importazione Nome2CodePoint
Classe LinuxHint_Parse (htmlparser):
def handle_starttag (self, tag, atrs):
Stampa ("Avvia tag:", tag)
per attr in atrs:
stampa ("attr:", attr)
def handle_endtag (self, tag):
print ("end tag:", tag)
def handle_data (self, dati):
print ("Data:", dati)
def handle_comment (self, dati):
Print ("Commento:", dati)
def manding_entyref (self, name):
C = Chr (name2CodePoint [nome])
Stampa ("Nominato Ent:", C)
def handle_charref (self, name):
Se il nome.startWith ('x'):
c = chr (int (nome [1:], 16))
altro:
c = chr (int (nome))
Stampa ("Numt:", C)
def handle_decl (self, dati):
Print ("Decl:", Data)
parser = linuxhint_parse ()
Con varie chiamate, diamo alimentare i dati HTML separati a questa istanza e vedere quale output generano queste chiamate. Inizieremo con un semplice Doctype corda:
parser.foraggio(' ')
Ecco cosa torniamo con questa chiamata:
String Doctype
Proviamo ora un tag immagine e vediamo quali dati estrae:
parser.foraggio('')
Ecco cosa torniamo con questa chiamata:
Tag immagine htmlparser
Successivamente, proviamo come il tag script si comporta con le funzioni di Python:
parser.foraggio(''
'mettere in guardia("Linuxhint Python"); ')
parser.feed ('#Python Color: Green')
parser.feed ('#Python Color: Green')
Ecco cosa torniamo con questa chiamata:
Tag di script in htmlparser
Infine, passiamo i commenti anche alla sezione HTMLPARSER:
parser.foraggio(''
"Contenuto specifico per IE")
Ecco cosa torniamo con questa chiamata:
Analisi dei commenti
Conclusione
In questa lezione, abbiamo esaminato come possiamo analizzare HTML usando la classe HTMLPARSER Python senza alcuna altra libreria. Possiamo facilmente modificare il codice per modificare l'origine dei dati HTML in un client HTTP.
Leggi di più post basati su Python qui.