Krajta

Analýza HTML pomocí Pythonu

Analýza HTML pomocí Pythonu
Analýza HTML je jedním z nejběžnějších úkolů, které se dnes provádějí při shromažďování informací z webových stránek a jejich těžbě pro různé účely, jako je stanovení cenového výkonu produktu v průběhu času, recenze knihy na webu a mnoho dalšího. Existuje mnoho knihoven, jako je BeautifulSoup v Pythonu, který při analýze HTML odebírá tolik bolestivých bodů, ale stojí za to vědět, jak tyto knihovny skutečně fungují pod touto vrstvou abstrakce.

V této lekci to chceme udělat. Zjistíme, jak lze extrahovat hodnoty různých značek HTML, a také přepsat výchozí funkce tohoto modulu, abychom přidali vlastní logiku. Uděláme to pomocí HTMLParser třída v Pythonu v html.analyzátor modul. Podívejme se na kód v akci.

Při pohledu na třídu HTMLParser

K analýze textu HTML v Pythonu můžeme použít HTMLParser třída v html.analyzátor modul. Pojďme se podívat na definici třídy pro HTMLParser třída:

třída html.analyzátor.HTMLParser (*, convert_charrefs = True)

The convert_charrefs Pokud je nastaveno na True, všechny odkazy na znaky budou převedeny na jejich ekvivalenty Unicode. Pouze scénář / styl prvky nejsou převedeny. Nyní se pokusíme porozumět každé funkci pro tuto třídu a také lépe porozumět tomu, co každá funkce dělá.

Podtřída třídy HTMLParser

V této části provedeme podkategorii třídy HTMLParser a podíváme se na některé funkce, které jsou volány při předávání dat HTML instanci třídy. Pojďme napsat jednoduchý skript, který toto všechno provede:

z html.import analyzátoru HTMLParser
třída LinuxHTMLParser (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Start tag stretl:", tag)
def handle_endtag (self, tag):
print ("Koncová značka narazena:", značka)
def handle_data (self, data):
tisk ("Data nalezena:", data)
parser = LinuxHTMLParser ()
analyzátor.krmit("
''

Modul pro analýzu HTML v Pythonu


')

S tímto příkazem se vrátíme:

Python HTMLParser podtřída

Funkce HTMLParser

V této části budeme pracovat s různými funkcemi třídy HTMLParser a podíváme se na funkčnost každé z nich:

z html.import analyzátoru HTMLParser
z html.entity import name2codepoint
třída LinuxHint_Parse (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Start tag:", tag)
pro attr v attrs:
print ("attr:", attr)
def handle_endtag (self, tag):
print ("End tag:", tag)
def handle_data (self, data):
tisk ("Data:", data)
def handle_comment (self, data):
tisk ("Komentář:", data)
def handle_entityref (self, name):
c = chr (name2codepoint [jméno])
tisk ("Pojmenovaný ent:", c)
def handle_charref (self, name):
pokud jméno.začíná s ('x'):
c = chr (int (název [1:], 16))
jiný:
c = chr (int (jméno))
print ("Num ent:", c)
def handle_decl (self, data):
print ("Decl:", data)
analyzátor = LinuxHint_Parse ()

S různými hovory, pojďme krmit samostatná data HTML do této instance a uvidíme, jaký výstup tato volání generují. Začneme jednoduchým DOCTYPE tětiva:

analyzátor.krmit(''"http: // www.w3.org / TR / html4 / strict.dtd "> ')

Tady je to, co jsme dostali zpět s tímto hovorem:

Řetězec DOCTYPE

Zkusme nyní značku obrázku a uvidíme, jaká data extrahuje:

analyzátor.krmit('Logo Pythonu')

Tady je to, co jsme dostali zpět s tímto hovorem:

Značka obrázku HTMLParser

Dále zkusme, jak se značka skriptu chová s funkcemi Pythonu:

analyzátor.krmit('')
analyzátor.krmit('')
analyzátor.feed ('# python color: green')

Tady je to, co jsme dostali zpět s tímto hovorem:

Značka skriptu v htmlparser

Nakonec také předáme komentáře do sekce HTMLParser:

analyzátor.krmit('''
''')

Tady je to, co jsme dostali zpět s tímto hovorem:

Analýza komentářů

Závěr

V této lekci jsme se podívali na to, jak můžeme analyzovat HTML pomocí vlastní třídy HTMLParser v Pythonu bez jakékoli jiné knihovny. Můžeme snadno upravit kód a změnit zdroj dat HTML na klienta HTTP.

Přečtěte si více příspěvků založených na Pythonu zde.

Jak změnit levé a pravé tlačítko myši na počítači se systémem Windows 10
Je úplnou normou, že všechna zařízení počítačových myší jsou ergonomicky navržena pro praváky. K dispozici jsou však myší zařízení, která jsou speciál...
Emulace kliknutí myší vznášením pomocí myši Clickless Mouse ve Windows 10
Používání myši nebo klávesnice ve špatném držení těla nadměrného používání může mít za následek mnoho zdravotních problémů, včetně napětí, syndromu ka...
Přidejte gesta myši do Windows 10 pomocí těchto bezplatných nástrojů
V posledních letech se počítače a operační systémy značně vyvinuly. Bývaly doby, kdy uživatelé museli procházet správci souborů pomocí příkazů. Stejně...