I denne leksjonen er det det vi har tenkt å gjøre. Vi vil finne ut hvordan verdier av forskjellige HTML -tagger kan trekkes ut og også overstyre standardfunksjonaliteten til denne modulen for å legge til en egen logikk. Vi vil gjøre dette ved hjelp av HTMLParser klasse i Python i html.analyser modul. La oss se koden i aksjon.
Ser på HTMLParser -klassen
For å analysere HTML -tekst i Python, kan vi benytte oss av HTMLParser klasse i html.analyser modul. La oss se på klassen Dfinition for HTMLParser klasse:
Klasse HTML.analyser.Htmlparser (*, convert_charrefs = true)
De Convert_charrefs Feltet, hvis det er satt til True, vil gjøre alle karakterhenvisningene konvertert til sine Unicode -ekvivalenter. Bare den manus/stil Elementer er ikke konvertert. Nå vil vi prøve å forstå hver funksjon for denne klassen i tillegg til å bedre forstå hva hver funksjon gjør.
def håndtak_startendTag (selv, tag, attrs):
selv-.Handle_startTag (tag, attrs)
selv-.Handle_EndTag (tag)
def håndtak_starttag (selv, tag, attrs):
sende
def Handle_EndTag (selv, tag):
sende
def håndtak_charref (selv, navn):
sende
Def Handle_EntityRef (selv, navn):
sende
def håndtak_data (selv, data):
sende
DEF HANDRE_COMMENT (SELV, DATA):
sende
def håndtak_pi (selv, data):
sende
def håndtak_decl (selv, dekl):
sende
Underklassing av HTMLParser -klassen
I denne delen vil vi underklasse HTMLParser-klassen og vil se på noen av funksjonene som blir kalt når HTML-data blir sendt til klasseforekomst. La oss skrive et enkelt manus som gjør alt dette:
Fra HTML.Parser Import HTMLParser
Klasse LinuxhtmlParser (HTMLParser):
def håndtak_starttag (selv, tag, attrs):
print ("Start tag møtes:", tag)
def Handle_EndTag (selv, tag):
Print ("End Tag møtes:", tag)
def håndtak_data (selv, data):
Print ("Data funnet:", data)
Parser = LinuxhtmlParser ()
analyser.mate("
'Python HTML Parsing Module
')
Dette er hva vi kommer tilbake med denne kommandoen:
Python HTMLParser underklasse
HTMLParser fungerer
I dette avsnittet vil vi jobbe med forskjellige funksjoner i HTMLParser -klassen og se på funksjonaliteten til hver av disse:
Fra HTML.Parser Import HTMLParser
Fra HTML.Enheter importerer name2CodePoint
Klasse Linuxhint_Parse (HTMLParser):
def håndtak_starttag (selv, tag, attrs):
Print ("Start tag:", tag)
for attr i attrs:
trykk ("attr:", attr)
def Handle_EndTag (selv, tag):
Print ("End Tag:", tag)
def håndtak_data (selv, data):
Print ("Data:", data)
DEF HANDRE_COMMENT (SELV, DATA):
trykk ("Kommentar:", data)
Def Handle_EntityRef (selv, navn):
C = CHR (Name2CodePoint [navn])
Trykk ("Navnet ENT:", C)
def håndtak_charref (selv, navn):
Hvis navn.Startswith ('x'):
C = Chr (int (navn [1:], 16))
ellers:
C = Chr (int (navn))
Print ("Num Ent:", c)
def håndtak_decl (selv, data):
Print ("Decl:", data)
parser = linuxhint_parse ()
Med forskjellige samtaler, la oss mate separate HTML -data til denne forekomsten og se hvilken utgang disse samtalene genererer. Vi starter med en enkel Doctype streng:
analyser.mate(' ')
Her er hva vi får tilbake med denne samtalen:
Doctype streng
La oss nå prøve en bildekode og se hvilke data den trekker ut:
analyser.mate('')
Her er hva vi får tilbake med denne samtalen:
HTMLParser Image Tag
La oss deretter prøve hvordan skriptetaggen oppfører seg med Python -funksjoner:
analyser.mate(''
'varsling("Linuxhint Python"); ')
analyser.Feed ('#Python Color: Green')
analyser.Feed ('#Python Color: Green')
Her er hva vi får tilbake med denne samtalen:
Script Tag i HTMLParser
Til slutt gir vi kommentarer til HTMLParser -delen også:
analyser.mate(''
'IE-spesifikt innhold')
Her er hva vi får tilbake med denne samtalen:
Analysere kommentarer
Konklusjon
I denne leksjonen så vi på hvordan vi kan analysere HTML ved hjelp av Python egen HTMLParser -klasse uten noe annet bibliotek. Vi kan enkelt endre koden for å endre kilden til HTML -dataene til en HTTP -klient.
Les mer Python -baserte innlegg her.