W tej lekcji właśnie to zamierzamy zrobić. Dowiedzimy się, w jaki sposób można wyodrębnić wartości różnych znaczników HTML, a także zastąpić domyślną funkcjonalność tego modułu, aby dodać własną logikę. Zrobimy to za pomocą Htmlparser klasa w Python w html.Parser moduł. Zobaczmy kod w akcji.
Patrząc na klasę HTMLPARSER
Aby przeanalizować tekst HTML w Python, możemy z nich skorzystać Htmlparser klasa w html.Parser moduł. Spójrzmy na klasę dfinition dla Htmlparser klasa:
klasa HTML.Parser.Htmlparser (*, konwertu_charrefs = true)
Convert_Charrefs pole, jeśli ustawione na true sprawi, że wszystkie odniesienia do postaci przekonwertowane na ich ekwiwalentki Unicode. Tylko skrypt/styl Elementy nie są przekonwertowane. Teraz postaramy się zrozumieć każdą funkcję dla tej klasy, aby lepiej zrozumieć, co robi każda funkcja.
def uchwyt_startendtag (self, tag, attrs):
samego siebie.uchwyt_starttag (tag, attrs)
samego siebie.uchwyt_dtag (tag)
def uchwyt_starttag (self, tag, attrs):
przechodzić
def uchwyt_endtag (self, tag):
przechodzić
def uchwyt_charref (self, nazwa):
przechodzić
def uchwyt_entityref (self, nazwa):
przechodzić
def uchwyt_data (self, dane):
przechodzić
def uchwyt (self, dane):
przechodzić
def uchwyt_pi (self, dane):
przechodzić
def uchwyt_decl (self, dek):
przechodzić
Podklasowanie klasy HTMLPARSER
W tej sekcji będziemy podklasować klasę HTMLPARSER i przyjrzymy się niektórym funkcjom wywoływanym, gdy dane HTML są przekazywane do instancji klasowej. Napiszmy prosty skrypt, który to wszystko:
Z HTML.Parser import htmlparser
klasa LinuxhtmlParser (HTMLPARSER):
def uchwyt_starttag (self, tag, attrs):
print („start tag spotkał:”, tag)
def uchwyt_endtag (self, tag):
print („End Tag spotkał:”, tag)
def uchwyt_data (self, dane):
druk („Znaleziono dane:”, dane)
parser = LinuxhtmlParser ()
Parser.karmić("
'Python HTML Parsing
')
Oto, co wracamy z tym poleceniem:
Podklasa Python Htmlparser
Funkcje htmlparser
W tej sekcji będziemy pracować z różnymi funkcjami klasy HTMLPARSER i przyjrzymy się funkcjonalności każdego z nich:
Z HTML.Parser import htmlparser
Z HTML.Podmioty importowe Name2CodPoint
klasa Linuxhint_parse (htmlparser):
def uchwyt_starttag (self, tag, attrs):
print („start tag:”, tag)
Dla attr w attrs:
Drukuj („attr:”, attr)
def uchwyt_endtag (self, tag):
print („end tag:”, tag)
def uchwyt_data (self, dane):
drukuj („dane:”, dane)
def uchwyt (self, dane):
drukuj („komentarz:”, dane)
def uchwyt_entityref (self, nazwa):
c = chr (name2codepoint [nazwa])
Drukuj („Nazwa Ent:”, C)
def uchwyt_charref (self, nazwa):
Jeśli nazwa.startswith („x”):
c = chr (int (nazwa [1:], 16))
w przeciwnym razie:
c = chr (int (nazwa))
Drukuj („num ent:”, c)
def uchwyt_decl (self, dane):
Drukuj („Decl:”, dane)
parser = Linuxhint_parse ()
Za pomocą różnych połączeń przekazajmy osobne dane HTML do tej instancji i zobaczmy, jakie dane wyjściowe generują te wywołania. Zaczniemy od prostego Doctype strunowy:
Parser.karmić(' ')
Oto, co wracamy z tym wezwaniem:
String DocType
Spróbujmy teraz znacznika obrazu i zobaczmy, jakie dane wyodrębniają:
Parser.karmić('')
Oto, co wracamy z tym wezwaniem:
Tag obrazu HtmlParser
Następnie spróbujmy, w jaki sposób znacznik skryptu zachowuje się w funkcjach Pythona:
Parser.karmić(''
'alarm("Linuxhint Python"); ')
Parser.Feed ('#Python Color: Green')
Parser.Feed ('#Python Color: Green')
Oto, co wracamy z tym wezwaniem:
Tag skryptu w htmlparser
Na koniec przekazujemy również komentarze do sekcji HTMLPARSER:
Parser.karmić(''
„Treść specyficzna dla IE”)
Oto, co wracamy z tym wezwaniem:
Parsowanie komentarzy
Wniosek
W tej lekcji przyjrzeliśmy się, w jaki sposób możemy przeanalizować HTML za pomocą Python Own HTMLPARSER Class bez żadnej innej biblioteki. Możemy łatwo zmodyfikować kod, aby zmienić źródło danych HTML na klienta HTTP.
Przeczytaj więcej postów opartych na Pythonie tutaj.