Python

Analýza kódu HTML pomocou jazyka Python

Analýza kódu HTML pomocou jazyka Python
Analýza HTML je dnes jednou z najbežnejších úloh zhromažďovania informácií z webových stránok a ich ťažby na rôzne účely, ako je stanovenie cenového výkonu produktu v priebehu času, recenzie knihy na webe a oveľa viac. Existuje veľa knižníc ako BeautifulSoup v Pythone, ktoré odoberajú toľko bolestivých bodov pri analýze HTML, ale stojí za to vedieť, ako tieto knižnice skutočne fungujú pod touto vrstvou abstrakcie.

V tejto lekcii to chceme urobiť. Zistíme, ako je možné extrahovať hodnoty rôznych značiek HTML, a tiež prepíšeme predvolenú funkčnosť tohto modulu, aby sme pridali vlastnú logiku. Urobíme to pomocou HTMLParser trieda v Pythone v html.parser modul. Pozrime sa na kód v akcii.

Pri pohľade na triedu HTMLParser

Na analýzu textu HTML v Pythone môžeme použiť HTMLParser trieda v html.parser modul. Pozrime sa na definíciu triedy pre HTMLParser trieda:

trieda html.parser.HTMLParser (*, convert_charrefs = True)

The convert_charrefs pole, ak je nastavené na True, prevedie všetky odkazy na znaky na ich ekvivalenty Unicode. Len scenár / štýl prvky sa nekonvertujú. Teraz sa pokúsime porozumieť každej funkcii tejto triedy, aby sme lepšie pochopili, čo ktorá funkcia robí.

Podtrieda triedy HTMLParser

V tejto časti podrobíme podkategóriu triede HTMLParser a pozrieme sa na niektoré funkcie, ktoré sa volajú, keď sa údaje HTML odovzdávajú inštancii triedy. Poďme napísať jednoduchý skript, ktorý toto všetko urobí:

z html.import analyzátora HTMLParser
trieda LinuxHTMLParser (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Bola zistená začiatočná značka:", značka)
def handle_endtag (self, tag):
print ("Koncová značka bola zistená:", značka)
def handle_data (self, data):
tlač ("Nájdené údaje:", údaje)
parser = LinuxHTMLParser ()
parser.krmivo („

Modul na analýzu HTML v jazyku Python


")

S týmto príkazom sa dostaneme späť:

Podtrieda Python HTMLParser

Funkcie HTMLParser

V tejto časti budeme pracovať s rôznymi funkciami triedy HTMLParser a pozrieme sa na funkčnosť každej z nich:

z html.import analyzátora HTMLParser
z html.entity import name2codepoint
trieda LinuxHint_Parse (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Start tag:", tag)
pre attr v attrs:
print ("attr:", attr)
def handle_endtag (self, tag):
print ("Koncová značka:", značka)
def handle_data (self, data):
tlačiť („Údaje:“, údaje)
def handle_comment (self, data):
print ("Komentár:", údaje)
def handle_entityref (self, meno):
c = chr (name2codepoint [meno])
tlač ("Menovaný ent:", c)
def handle_charref (self, meno):
ak meno.startswith ('x'):
c = chr (int (názov [1:], 16))
inak:
c = chr (int (meno))
print ("Num ent:", c)
def handle_decl (self, data):
tlačiť („Odchýlka:“, údaje)
parser = LinuxHint_Parse ()

Pri rôznych hovoroch poďme do tejto inštancie vložiť samostatné údaje HTML a uvidíme, aký výstup tieto volania generujú. Začneme jednoduchým DOCTYPE reťazec:

parser.krmivo (''"http: // www.w3.org / TR / html4 / prísne.dtd "> ')

S touto výzvou sa vraciame:

DOCTYPE reťazec

Poďme teraz vyskúšať značku obrázka a zistiť, aké údaje extrahuje:

parser.krmivo ('Logo Pythonu")

S touto výzvou sa vraciame:

Značka obrázka HTMLParser

Ďalej vyskúšame, ako sa značka skriptu chová s funkciami Pythonu:

parser.krmivo ('")
parser.krmivo ('")
parser.feed ('# python color: green')

S touto výzvou sa vraciame:

Značka skriptu v htmlparser

Nakoniec pošleme komentáre aj do sekcie HTMLParser:

parser.krmivo ('
")

S touto výzvou sa vraciame:

Analýza komentárov

Záver

V tejto lekcii sme sa pozreli na to, ako môžeme analyzovať HTML pomocou vlastnej triedy HTMLParser v Pythone bez akejkoľvek inej knižnice. Môžeme ľahko upraviť kód tak, aby sme zmenili zdroj údajov HTML na klienta HTTP.

Prečítajte si viac príspevkov založených na Pythone tu.

Hry Top 5 kariet na zachytávanie hier
Top 5 kariet na zachytávanie hier
Všetci sme videli a milovali streamovanie hier na YouTube. PewDiePie, Jakesepticye a Markiplier sú iba niektorí z najlepších hráčov, ktorí zarobili mi...
Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...
Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...