Python

HTML-i sõelumine Pythoni abil

HTML-i sõelumine Pythoni abil
HTML-i sõelumine on üks levinumaid ülesandeid, mida tänapäeval tehakse veebisaitidelt teabe kogumiseks ja selle mitmesugustel eesmärkidel kaevandamiseks, näiteks toote hinna toimivuse kindlakstegemine aja jooksul, veebisaidil oleva raamatu ülevaade ja palju muud. Pythonis on palju selliseid raamatukogusid nagu BeautifulSoup, mis võtab HTML-i sõelumisel välja nii palju valusaid punkte, kuid tasub teada, kuidas need teegid selle abstraktsioonikihi all tegelikult töötavad.

Selles tunnis kavatseme seda teha. Saame teada, kuidas saab erinevate HTML-siltide väärtusi välja tõmmata, ja alistame ka selle mooduli vaikefunktsioonid, et lisada omaette loogikat. Teeme seda kasutades HTMLParser klassi Pythonis aastal HTML.parser moodul. Vaatame koodi toimimas.

Vaadates HTMLParseri klassi

HTML-i teksti sõelumiseks Pythonis saame seda kasutada HTMLParser klassi sisse HTML.parser moodul. Vaatame klassi dfinition for HTMLParser klass:

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

The convert_charrefs Kui väärtuseks seatakse True, muudetakse kõik märgiviited nende Unicode'i ekvivalentideks. Ainult stsenaarium / stiil elemente ei teisendata. Nüüd proovime mõista ka selle klassi kõiki funktsioone, et paremini mõista, mida iga funktsioon teeb.

Klass HTMLParser alamklass

Selles jaotises liigitame klassi HTMLParser alamklassi ja vaatame mõningaid funktsioone, mida kutsutakse, kui HTML-andmed klassi eksemplarile edastatakse. Kirjutame lihtsa skripti, mis seda kõike teeb:

HTML-ist.parseri import HTMLParser
klassi LinuxHTMLParser (HTMLParser):
def hand_starttag (ise, silt, attrid):
print ("Starditud märgend:", silt)
def hand_endtag (ise, silt):
print ("Lõpumärgend kohtus:", silt)
def hand_data (ise, andmed):
print ("Leitud andmed:", andmed)
parser = LinuxHTMLParser ()
parser.voog ("
"

Pythoni HTML-i sõelumismoodul


')

Selle käsuga saame tagasi:

Pythoni HTMLParseri alaklass

HTMLParseri funktsioonid

Selles jaotises töötame HTMLParseri klassi erinevate funktsioonidega ja uurime kõigi nende funktsionaalsust:

HTML-ist.parseri import HTMLParser
HTML-ist.üksused impordivad nime2koodipunkt
klass LinuxHint_Parse (HTMLParser):
def hand_starttag (ise, silt, attrid):
print ("Alusta silti:", silt)
attride jaoks attrides:
print ("attr:", attr)
def hand_endtag (ise, silt):
print ("End tag:", silt)
def hand_data (ise, andmed):
print ("Andmed:", andmed)
def käsk_kommentaar (ise, andmed):
print ("Kommentaar:", andmed)
def hand_entityref (ise, nimi):
c = chr (nimi2koodipunkt [nimi])
print ("Nimega ent:", c)
def hand_charref (ise, nimi):
kui nimi.startswith ('x'):
c = chr (int (nimi [1:], 16))
muu:
c = chr (int (nimi))
print ("Num ent:", c)
def hand_decl (ise, andmed):
print ("Decl:", andmed)
parser = LinuxHint_Parse ()

Erinevate kõnede korral toogem sellesse eksemplari eraldi HTML-andmeid ja vaadake, millist väljundit need kõned genereerivad. Alustame lihtsast DOCTYPE string:

parser.feed (''"http: // www.w3.org / TR / html4 / range.dtd "> ')

Selle kõne abil saame tagasi:

DOCTYPE string

Proovime nüüd pildimärgendit ja vaatame, milliseid andmeid see eraldab:

parser.feed ('Pythoni logo')

Selle kõne abil saame tagasi:

HTMLParseri pildimärgend

Järgmisena proovime, kuidas skripti silt Pythoni funktsioonidega käitub:

parser.feed ('')
parser.feed ('')
parser.voog ('# python color: green')

Selle kõne abil saame tagasi:

Skripti silt HTMLparseris

Lõpuks edastame kommentaarid ka jaotisele HTMLParser:

parser.feed ('"
"')

Selle kõne abil saame tagasi:

Kommentaaride sõelumine

Järeldus

Selles tunnis vaatasime, kuidas saaksime HTML-i sõeluda, kasutades Pythoni enda HTMLParseri klassi, ilma igasuguse muu teegita. Saame koodi hõlpsasti muuta, et muuta HTML-andmete allikas HTTP-kliendiks.

Loe rohkem Pythoni põhiseid postitusi siit.

Lahing Wesnothi õpetuse eest
Battle for Wesnoth on üks populaarsemaid avatud lähtekoodiga strateegiamänge, mida saate praegu mängida. See mäng pole mitte ainult olnud väga pikka a...
0 A.D. Õpetus
Paljudest strateegiamängudest on 0 A.D. suudab silma paista põhjaliku tiitli ja väga sügava taktikalise mänguna, hoolimata sellest, et see on avatud l...
Unity3D õpetus
Sissejuhatus Unity 3D-sse Unity 3D on võimas mängude arendamise mootor. See on platvormidevaheline, mis võimaldab teil luua mänge mobiilseadmetele, ve...