Python

Parsējot HTML, izmantojot Python

Parsējot HTML, izmantojot Python
HTML analizēšana ir viens no visbiežāk paveiktajiem uzdevumiem, kas šodien tiek veikts, lai savāktu informāciju no vietnēm un iegūtu to dažādiem mērķiem, piemēram, lai noteiktu produkta cenas veiktspēju laika gaitā, grāmatas pārskatus vietnē un daudz ko citu. Pastāv daudzas bibliotēkas, piemēram, Python, piemēram, BeautifulSoup, kas abstrahē tik daudz sāpīgu punktu, analizējot HTML, taču ir vērts zināt, kā šīs bibliotēkas faktiski darbojas zem šī abstrakcijas slāņa.

Šajā nodarbībā mēs to plānojam darīt. Mēs uzzināsim, kā var iegūt dažādu HTML tagu vērtības, kā arī ignorēs šī moduļa noklusējuma funkcionalitāti, lai pievienotu kādu mūsu pašu loģiku. Mēs to darīsim, izmantojot HTMLParser klase Pitonā html.parsētājs modulis. Apskatīsim kodu darbībā.

Aplūkojot HTMLParser klasi

Lai parsētu HTML tekstu Python, mēs varam izmantot HTMLParser klasē html.parsētājs modulis. Apskatīsim klases klases finālu HTMLParser klase:

klases html.parsētājs.HTMLParser (*, convert_charrefs = True)

The convert_charrefs lauks, ja iestatīts uz True, visas rakstzīmju atsauces pārveidos par to unikoda kodiem. Tikai scenārijs / stils elementi netiek konvertēti. Tagad mēs centīsimies saprast arī katru šīs klases funkciju, lai labāk saprastu, ko katra funkcija dara.

Apakšklase HTMLParser klasē

Šajā sadaļā mēs klasēsim HTMLParser klasi un apskatīsim dažas funkcijas, kas tiek izsauktas, kad HTML dati tiek nodoti klases instancē. Uzrakstīsim vienkāršu skriptu, kas to visu izdarīs:

no html.parsētāja importēšana HTMLParser
klases LinuxHTMLParser (HTMLParser):
def hand_starttag (self, tag, attrs):
print ("Radās sākuma tags:", tags)
def hand_endtag (pats, tags):
print ("Radās beigu tags:", tags)
def hand_data (sevis, dati):
drukāt ("Atrasti dati:", dati)
parsētājs = LinuxHTMLParser ()
parsētājs.plūsma ("
"

Python HTML parsēšanas modulis


')

Lūk, ko mēs atgūsim ar šo komandu:

Python HTMLParser apakšklase

HTMLParser funkcijas

Šajā sadaļā mēs strādāsim ar dažādām HTMLParser klases funkcijām un aplūkosim šo funkciju funkcionalitāti:

no html.parsētāja importēšana HTMLParser
no html.entītijas importē name2codepoint
klase LinuxHint_Parse (HTMLParser):
def hand_starttag (self, tag, attrs):
drukāt ("Sākt tagu:", tagu)
par attr attrs:
drukāt ("attr:", attr)
def hand_endtag (pats, tags):
drukāt ("End tag:", tags)
def hand_data (sevis, dati):
drukāt ("Dati:", dati)
def hand_comment (pats, dati):
drukāt ("Komentārs:", dati)
def hand_entityref (pats, vārds):
c = chr (nosaukums2 koda punkts [nosaukums])
drukāt ("Nosaukts ent:", c)
def hand_charref (pats, vārds):
ja vārds.startswith ('x'):
c = chr (int (nosaukums [1:], 16))
cits:
c = chr (int (nosaukums))
drukāt ("Num ent:", c)
def hand_decl (pats, dati):
drukāt ("Decl:", dati)
parsētājs = LinuxHint_Parse ()

Izmantojot dažādus zvanus, padosim šim gadījumam atsevišķus HTML datus un redzēsim, kādu izvadi ģenerē šie zvani. Mēs sāksim ar vienkāršu DOCTYPE virkne:

parsētājs.plūsma (''"http: // www.w3.org / TR / html4 / stingri.dtd "> ')

Lūk, ko mēs atgūsim ar šo zvanu:

DOCTYPE virkne

Tagad izmēģināsim attēla tagu un redzēsim, kādus datus tas iegūst:

parsētājs.plūsma ('Python logotips')

Lūk, ko mēs atgūsim ar šo zvanu:

HTMLParser attēla tags

Pēc tam izmēģināsim, kā skripta tags darbojas ar Python funkcijām:

parsētājs.plūsma ('')
parsētājs.plūsma ('')
parsētājs.plūsma ('# python color: green')

Lūk, ko mēs atgūsim ar šo zvanu:

Skripta tags HTML failā

Visbeidzot, mēs nododam komentārus arī sadaļai HTMLParser:

parsētājs.plūsma ('"
"')

Lūk, ko mēs atgūsim ar šo zvanu:

Parsējot komentārus

Secinājums

Šajā nodarbībā mēs apskatījām, kā mēs varam parsēt HTML, izmantojot Python pašu HTMLParser klasi bez citas bibliotēkas. Mēs varam viegli modificēt kodu, lai mainītu HTML datu avotu uz HTTP klientu.

Lasiet vairāk uz Python balstītas ziņas šeit.

Kā nomainīt peles kreiso un labo pogu operētājsistēmā Windows 10
Tas ir diezgan normāli, ka visas datora peles ierīces ir ergonomiski izstrādātas lietotājiem ar labo roku. Bet ir pieejamas peles ierīces, kas ir īpaš...
Atdariniet peles klikšķus, virzot kursoru, izmantojot operētājsistēmā Windows 10 bezklikšķu peli
Peles vai tastatūras lietošana nepareizā pozā, ja to lieto pārmērīgi daudz, var izraisīt daudz veselības problēmu, tostarp spriedzi, karpālā kanāla si...
Pievienojiet peles žestus operētājsistēmai Windows 10, izmantojot šos bezmaksas rīkus
Pēdējos gados datori un operētājsistēmas ir ievērojami attīstījušās. Bija laiks, kad lietotājiem bija jāizmanto komandas, lai pārvietotos pa failu pār...