„Python“

HTML analizavimas naudojant „Python“

HTML analizavimas naudojant „Python“
HTML analizavimas yra viena iš labiausiai paplitusių užduočių, atliekamų šiandien renkant informaciją iš svetainių ir ją naudojant įvairiems tikslams, pvz., Nustatyti produkto kainos našumą laikui bėgant, knygos apžvalgas svetainėje ir daug daugiau. Yra daugybė bibliotekų, tokių kaip „Python“ „BeautifulSoup“, kuri išskiria tiek daug skaudžių taškų analizuojant HTML, tačiau verta žinoti, kaip tos bibliotekos iš tikrųjų veikia po tuo abstrakcijos sluoksniu.

Šioje pamokoje tai ir ketiname padaryti. Mes sužinosime, kaip galima išskleisti skirtingų HTML žymų reikšmes, taip pat nepaisysime numatytojo šio modulio funkcijų, kad pridėtume tam tikrą savo logiką. Tai padarysime naudodami HTMLParser klasėje „Python“ HTML.analizatorius modulis. Pažiūrėkime, kaip veikia kodas.

Pažvelgus į HTMLParser klasę

Norėdami išanalizuoti HTML tekstą „Python“, galime pasinaudoti HTMLParser klasė HTML.analizatorius modulis. Pažvelkime į klasės varžybas HTMLParser klasė:

klasės html.analizatorius.HTMLParser (*, convert_charrefs = True)

The convert_charrefs lauke, jei nustatyta į „True“, visos simbolių nuorodos bus konvertuotos į jų „Unicode“ atitikmenis. Tik scenarijus / stilius elementai nėra konvertuojami. Dabar pabandysime suprasti ir kiekvieną šios klasės funkciją, kad geriau suprastume, ką daro kiekviena funkcija.

Klasės HTMLParser poklasis

Šiame skyriuje mes klasifikuosime HTMLParser klasę ir apžvelgsime kai kurias funkcijas, kurios yra iškviečiamos, kai HTML duomenys perduodami klasės egzemplioriui. Parašykime paprastą scenarijų, kuris atliktų visa tai:

iš html.analizatoriaus importas HTMLParser
klasės „LinuxHTMLParser“ (HTMLParser):
def rank_starttag (savarankiškai, žyma, attrai):
spausdinti ("Pradėta žyma įvyko:", žyma)
def hand_endtag (savarankiškai, žyma):
spausdinti ("Aptikta pabaigos žyma:", žyma)
def rank_data (savęs, duomenų):
spausdinti ("Rasti duomenys:", duomenys)
analizatorius = LinuxHTMLParser ()
analizatorius.maitinti("
"

„Python“ HTML analizavimo modulis


„)

Štai ką mes grąžiname naudodami šią komandą:

„Python HTMLParser“ poklasis

HTMLParser funkcijos

Šiame skyriuje dirbsime su įvairiomis HTMLParser klasės funkcijomis ir nagrinėsime kiekvieno iš jų funkcionalumą:

iš html.analizatoriaus importas HTMLParser
iš html.subjektai importuoja name2cepepoint
klasės „LinuxHint_Parse“ (HTMLParser):
def rank_starttag (savarankiškai, žymos, attrai):
spausdinti ("Pradėti žymą:", žyma)
už attr attrus:
spausdinti ("attr:", attr)
def hand_endtag (savarankiškai, žyma):
spausdinti ("End tag:", tag)
def rank_data (savęs, duomenų):
spausdinti ("Duomenys:", duomenys)
def rank_komentaras (savęs, duomenų):
spausdinti ("Komentaras:", duomenys)
def rankos_entityrefas (pats, vardas):
c = chr (vardas2 kodo taškas [vardas])
spausdinti („Pavadinta ent:“, c)
def rankos_charrefas (pats, vardas):
jei vardas.startswith ('x'):
c = chr (int (vardas [1:], 16))
Kitas:
c = chr (int (vardas))
spausdinti („Num ent:“, c)
def rank_decl (savęs, duomenų):
spausdinti ("Decl:", duomenys)
analizatorius = LinuxHint_Parse ()

Vykdydami įvairius skambučius, pateikime atskirus HTML duomenis šiam egzemplioriui ir pažiūrėkime, kokį išvestį generuoja šie skambučiai. Pradėsime nuo paprasto DOCTYPE eilutė:

analizatorius.maitinti('"" http: // www.w3.org / TR / html4 / griežtas.dtd "> ')

Štai ką mes grįšime su šiuo skambučiu:

DOCTYPE eilutė

Išbandykime vaizdo žymą ir pažiūrėkime, kokius duomenis ji ištraukia:

analizatorius.maitinti('„Python“ logotipas„)

Štai ką mes grįšime su šiuo skambučiu:

HTMLParser vaizdo žyma

Tada pabandykime, kaip scenarijaus žyma veikia su „Python“ funkcijomis:

analizatorius.maitinti('„)
analizatorius.maitinti('„)
analizatorius.sklaidos kanalas ('# python color: green')

Štai ką mes grįšime su šiuo skambučiu:

Scenarijaus žyma HTMLparne

Galiausiai mes taip pat perduodame komentarus HTMLParser skyriui:

analizatorius.maitinti('"
"„)

Štai ką mes grįšime su šiuo skambučiu:

Analizuojami komentarai

Išvada

Šioje pamokoje mes apžvelgėme, kaip mes galime analizuoti HTML, naudodami „Python“ savo HTMLParser klasę be jokios kitos bibliotekos. Mes galime lengvai modifikuoti kodą, kad HTML duomenų šaltinis būtų pakeistas į HTTP klientą.

Skaitykite daugiau „Python“ pagrįstų įrašų čia.

10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...
5 geriausi „Arcade“ žaidimai, skirti „Linux“
Šiais laikais kompiuteriai yra rimta mašina, naudojama žaidimams. Jei negalėsite gauti naujo aukšto rezultato, žinosite, ką noriu pasakyti. Šiame įraš...
Mūšis už Wesnothą 1.13.6 Išleista plėtra
Mūšis už Wesnothą 1.13.6 išleistas praėjusį mėnesį, yra šeštasis 1 versijos kūrimo leidimas.13.„x“ serija ir ji teikia daug patobulinimų, ypač vartoto...