Pytonorm

Analysera HTML med Python

Analysera HTML med Python
Att analysera HTML är en av de vanligaste uppgifterna som görs idag för att samla in information från webbplatserna och bryta den för olika ändamål, som att fastställa prisprestanda för en produkt över tiden, recensioner av en bok på en webbplats och mycket mer. Det finns många bibliotek som BeautifulSoup i Python som tar bort så många smärtsamma punkter i att analysera HTML men det är värt att veta hur dessa bibliotek faktiskt fungerar under det lager av abstraktion.

I den här lektionen är det vad vi tänker göra. Vi kommer att ta reda på hur värden för olika HTML-taggar kan extraheras och åsidosätter också standardfunktionen för denna modul för att lägga till lite egen logik. Vi kommer att göra detta med hjälp av HTMLParser klass i Python i html.parser modul. Låt oss se koden i aktion.

Tittar på HTMLParser-klassen

För att analysera HTML-text i Python kan vi använda HTMLParser klass i html.parser modul. Låt oss titta på klassdfinitionen för HTMLParser klass:

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

De convert_charrefs fältet, om det är satt till True kommer alla teckenreferenser att konverteras till deras Unicode-ekvivalenter. Bara skript / stil element konverteras inte. Nu ska vi försöka förstå varje funktion för den här klassen för att bättre förstå vad varje funktion gör.

Delklassificering av HTMLParser-klassen

I detta avsnitt kommer vi att underklassera HTMLParser-klassen och ta en titt på några av de funktioner som anropas när HTML-data skickas till klassinstans. Låt oss skriva ett enkelt skript som gör allt detta:

från html.parser importera HTMLParser
klass LinuxHTMLParser (HTMLParser):
def handle_starttag (själv, tagg, attrs):
skriv ut ("Start tag:", tag)
def handle_endtag (själv, tagg):
skriva ut ("Slut taggen påträffad:", tag)
def handle_data (själv, data):
print ("Data hittades:", data)
parser = LinuxHTMLParser ()
parser.utfodra("
''

Python HTML-analyseringsmodul


')

Här är vad vi får tillbaka med det här kommandot:

Python HTMLParser-underklass

HTMLParser-funktioner

I det här avsnittet kommer vi att arbeta med olika funktioner i HTMLParser-klassen och titta på funktionaliteten hos var och en av dessa:

från html.parser importera HTMLParser
från html.enheter importerar name2codepoint
klass LinuxHint_Parse (HTMLParser):
def handle_starttag (själv, tagg, attrs):
skriva ut ("Start tag:", tag)
för attr in attrs:
skriva ut ("attr:", attr)
def handle_endtag (själv, tagg):
skriv ut ("End tag:", tag)
def handle_data (själv, data):
skriva ut ("Data:", data)
def handle_comment (själv, data):
skriv ut ("Kommentar:", data)
def handle_entityref (själv, namn):
c = chr (name2codepoint [namn])
tryck ("Namngiven ent:", c)
def handle_charref (själv, namn):
om namn.startar med ('x'):
c = chr (int (namn [1:], 16))
annan:
c = chr (int (namn))
tryck ("Num ent:", c)
def handle_decl (själv, data):
skriv ut ("Decl:", data)
parser = LinuxHint_Parse ()

Med olika samtal, låt oss mata separata HTML-data till denna instans och se vilken effekt dessa samtal genererar. Vi börjar med ett enkelt DOKTYP sträng:

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

Här är vad vi får tillbaka med det här samtalet:

DOCTYPE Sträng

Låt oss nu prova en bildtagg och se vilka data den extraherar:

parser.utfodra('Python-logotypen')

Här är vad vi får tillbaka med det här samtalet:

HTMLParser-bildtagg

Låt oss sedan prova hur skripttaggen beter sig med Python-funktioner:

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

Här är vad vi får tillbaka med det här samtalet:

Skriptetikett i htmlparser

Slutligen skickar vi också kommentarer till avsnittet HTMLParser:

parser.utfodra('''
''')

Här är vad vi får tillbaka med det här samtalet:

Analysera kommentarer

Slutsats

I den här lektionen tittade vi på hur vi kan analysera HTML med Pythons egen HTMLParser-klass utan något annat bibliotek. Vi kan enkelt ändra koden för att ändra källan till HTML-data till en HTTP-klient.

Läs mer Python-baserade inlägg här.

Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...
Mus Lägg till musgester i Windows 10 med dessa gratisverktyg
Lägg till musgester i Windows 10 med dessa gratisverktyg
Under senare år har datorer och operativsystem utvecklats kraftigt. Det fanns en tid då användare var tvungna att använda kommandon för att navigera g...
Mus Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Kontrollera och hantera musrörelser mellan flera skärmar i Windows 10
Dual Display Mouse Manager låter dig kontrollera och konfigurera musrörelser mellan flera skärmar genom att sakta ner dess rörelser nära gränsen. Wind...