Python

Razčlenjevanje HTML-ja z uporabo Pythona

Razčlenjevanje HTML-ja z uporabo Pythona
Razčlenjevanje HTML je danes najpogostejša naloga za zbiranje informacij s spletnih mest in njihovo pridobivanje za različne namene, na primer za določanje cenovne učinkovitosti izdelka skozi čas, ocene knjige na spletnem mestu in še veliko več. Obstaja veliko knjižnic, kot je BeautifulSoup v Pythonu, ki abstrahira toliko bolečih točk pri razčlenjevanju HTML-a, vendar je vredno vedeti, kako te knjižnice dejansko delujejo pod plastjo abstrakcije.

V tej lekciji bomo to storili. Ugotovili bomo, kako je mogoče izvleči vrednosti različnih oznak HTML, in tudi preglasiti privzeto funkcionalnost tega modula, da dodamo nekaj lastne logike. To bomo storili z uporabo HTMLParser razred v Pythonu v html.razčlenjevalnik modul. Poglejmo kodo v akciji.

Če pogledamo razred HTMLParser

Za razčlenitev besedila HTML v Pythonu lahko uporabimo HTMLParser razred v html.razčlenjevalnik modul. Oglejmo si definicijo razreda za HTMLParser razred:

razred html.razčlenjevalnik.HTMLParser (*, convert_charrefs = True)

The convert_charrefs Če je nastavljeno na True, bodo vsi sklici na znake pretvorjeni v ustreznike Unicode. Samo skript / slog elementi se ne pretvorijo. Zdaj bomo poskušali razumeti vsako funkcijo za ta razred, da bomo bolje razumeli, kaj vsaka funkcija počne.

Podrazred razreda HTMLParser

V tem razdelku bomo podrazredili razred HTMLParser in si ogledali nekatere funkcije, ki se pokličejo, ko se podatki HTML posredujejo primerku razreda. Napišimo preprost skript, ki naredi vse to:

iz html.razčlenjevalnik uvoz HTMLParser
razred LinuxHTMLParser (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Naletela je na začetno oznako:", oznaka)
def handle_endtag (self, tag):
print ("Našla se je končna oznaka:", oznaka)
def handle_data (self, data):
print ("Podatki najdeni:", podatki)
razčlenjevalnik = LinuxHTMLParser ()
razčlenjevalnik.vir ("
"

Python HTML razčlenjevalni modul


')

Tukaj dobimo s tem ukazom:

Podrazred Python HTMLParser

Funkcije HTMLParser

V tem razdelku bomo delali z različnimi funkcijami razreda HTMLParser in si ogledali funkcionalnost vsake od teh:

iz html.razčlenjevalnik uvoz HTMLParser
iz html.entitete uvozi name2codepoint
razred LinuxHint_Parse (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Start tag:", tag)
za attr v attrs:
tiskanje ("attr:", attr)
def handle_endtag (self, tag):
print ("Končna oznaka:", oznaka)
def handle_data (self, data):
print ("Podatki:", podatki)
def handle_comment (self, data):
print ("Komentar:", podatki)
def handle_entityref (self, name):
c = chr (name2codepoint [ime])
print ("Poimenovano ent:", c)
def handle_charref (jaz, ime):
če ime.začne s ('x'):
c = chr (int (ime [1:], 16))
sicer:
c = chr (int (ime))
print ("Število:", c)
def handle_decl (self, data):
tiskanje ("Decl:", podatki)
razčlenjevalnik = LinuxHint_Parse ()

Z različnimi klici naj temu primerku pošljemo ločene podatke HTML in si ogledamo, kakšen izhod ustvarijo ti klici. Začeli bomo s preprostim DOKTIP vrvica:

razčlenjevalnik.krma (''"http: // www.w3.org / TR / html4 / striktno.dtd "> ')

S tem klicem dobimo naslednje:

Niz DOCTYPE

Poskusimo zdaj s slikovno oznako in si oglejmo, katere podatke izvleče:

razčlenjevalnik.krma ('Logotip Python')

S tem klicem dobimo naslednje:

Oznaka slike HTMLParser

Nato poskusimo, kako se skriptna oznaka obnaša s funkcijami Python:

razčlenjevalnik.krma ('')
razčlenjevalnik.krma ('')
razčlenjevalnik.feed ('# python color: green')

S tem klicem dobimo naslednje:

Oznaka skripta v htmlparserju

Na koncu posredujemo komentarje tudi v razdelek HTMLParser:

razčlenjevalnik.krma ('"
"')

S tem klicem dobimo naslednje:

Razčlenjevanje komentarjev

Zaključek

V tej lekciji smo preučili, kako lahko razčlenimo HTML s pomočjo lastnega razreda Python HTMLParser brez kakršne koli druge knjižnice. Kodo lahko enostavno spremenimo, da spremenimo vir podatkov HTML v odjemalca HTTP.

Tukaj preberite več objav na osnovi Pythona.

Levi gumb miške ne deluje v sistemu Windows 10
Če s prenosnikom ali namiznim računalnikom uporabljate namensko miško, vendar gumb miške z levim klikom ne deluje v operacijskem sistemu Windows 10/8/...
Kazalec skoči ali se naključno premika med tipkanjem v sistemu Windows 10
Če ugotovite, da kazalec miške med tipkanjem v prenosnem računalniku ali računalniku Windows samodejno, naključno preskakuje ali se premika sam, vam l...
Kako obrniti smer drsenja miške in sledilne ploščice v sistemu Windows 10
Miška in Sledilna ploščicaRačunalništvo ni samo enostavno, ampak bolj učinkovito in manj zamudno. Življenja brez teh naprav si ne moremo predstavljati...