Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Parsing er at analysere og fortolke et dokuments struktur. Parsing-processen kan omfatte udtrækning af specifikke elementer, attributter eller data fra dokumentet og verifikation af, at dokumentet er velformateret, mens specifikke standarder eller regler følges. Parsing bruges hovedsageligt til at udtrække data fra websider eller manipulere strukturen af ​​websider, før de vises for brugerne.

Go leverer pakker til at arbejde med dokumenter, inklusive HTML- og XML-formaterne, der populært bruges på websider. Det html pakken indeholder funktioner til tokenisering og parsing af HTML.

HTML-pakken

Det html pakken giver en HTML5-kompatibel tokenizer og parser til at parse og manipulere HTML-dokumenter, krydse parsetræet og manipulere træstrukturen. Det html pakke er en indbygget pakke af Gos standardbibliotek.

Et af hovedtrækkene i html pakken er

instagram viewer
Parse funktion, der kan parse HTML-dokumenter og returnere parsetræets rodknude, hvorfra du kan bruge funktioner som f.eks. Førstebarn og NæsteSøskende for at navigere i træet og udtrække information fra dokumentet. Pakken giver også ParseFragment funktion til at analysere fragmenter af HTML-dokumenter.

Det EscapeString funktion er praktisk til at undslippe specialtegn i strenge for sikrere inkludering i HTML; du kan bruge denne funktion til at forhindre cross-site scripting (XSS) angreb ved at konvertere specialtegn til deres tilsvarende HTML-enheder.

For at komme i gang med html pakke, kan du importere pakken til dine Go-projektfiler.

importere"golang.org/x/net/html"

Det html pakken giver ingen funktioner til generering af HTML. I stedet kan du bruge html/skabelonpakke, som tilbyder et sæt funktioner til generering af HTML-skabeloner. Det html/skabelon pakken giver en funktion skabelon. HTMLEscape til at skrive escapede versioner af HTML til en svarskriver.

Det html/skabelon pakken er også en del af standardbiblioteket, og her er hvordan du kan importere pakken.

importere"html/skabelon"

Det html pakke er den mest populært anvendte skabelonpakke i Go-økosystemet og understøtter forskellige operationer og datatyper.

Parsing af HTML i Go

Det Parse funktion af html pakke hjælper med at analysere HTML-tekst og dokumenter. Det Parse funktion indtager en io. Læser instans, da det er et første argument, der indeholder fildokumentet og en *html. Node instans, som er HTML-dokumentets rodknude

Her er, hvordan du kan bruge Parse funktion til at parse en webside og returnere alle URL'erne på websiden.

importere (
"fmt"
"golang.org/x/net/html"
"net/http"
)

funcvigtigste() {
// Send en HTTP GET-anmodning til websiden example.com
hhv. fejl := http. Få(" https://www.example.com")
hvis fejl!= nul {
fmt. Println("Fejl:", fejl)
Vend tilbage
}
udsætte hhv. Legeme. Tæt()

// Brug html-pakken til at analysere svarteksten fra anmodningen
doc, fejl := html. Parse (hhv. Legeme)
hvis fejl!= nul {
fmt. Println("Fejl:", fejl)
Vend tilbage
}


// Find og udskriv alle links på websiden
var links []snor
var link func(*html. node)
link = func(n *html. node) {
hvis n. Indtast == html. ElementNode && n. Data == "en" {
til _, en := rækkevidde n. Attr {
hvis en. Nøgle == "href" {
// tilføjer en ny linkindgang, når attributten matcher
links = Tilføj(links, en. Val)
}
}
}

// krydser websidens HTML fra den første underordnede node
til c := n. FirstChild; c != nul; c = c. Næstesøskende {
link (c)
}
}
link (doc)

// sløjfer gennem link-udsnittet
til _, l := rækkevidde links {
fmt. Println("Link:", l)
}
}

Det vigtigste funktionen sender en HTTP GET-anmodning til webstedet med funktion af http pakke og henter sidens svartekst. Det Parse funktion af html pakken analyserer svarteksten og returnerer HTML-dokumentet.

Det links variabel er den udsnit af strenge, der vil indeholde URL'erne fra websiden. Det link funktionen tager pointereferencen til Node metode til html pakken, og Nøgle metoden for attributforekomsten fra noden returnerer data indeholdt i en specificeret attribut (i dette tilfælde, href). Funktionen krydser dokumentet med NæsteSøskende metode fra Førstebarn node for at udskrive hver URL på websiden. Til sidst udskriver for-løkken alle URL'erne fra links skive.

Her er resultatet af operationen.

Generering af HTML i Go

Det html/skabelon pakken indeholder et sæt funktioner til sikker og effektiv parsing og udførelse af HTML-skabeloner. Pakken er designet til brug i forbindelse med html pakke, som giver funktioner til at parse og manipulere HTML.

Du kan generere HTML til gengivelse på serversiden med html/skabelon pakke. Generering af HTML er praktisk til mange brugssager som afsendelse af e-mails, frontend-gengivelse på serversiden og mange flere. Du kommer til at bruge indbyggede Go-datatyper som kort og strukturer til at interagere og manipulere HTML'en på din webside.

Du bliver nødt til at forstå Gå til HTML-skabelonsyntaks at generere HTML med succes html/skabelon pakke.

importere (
"html/skabelon"
"os"
)

type hjemmeside struktur {
Titel snor
Overskrift snor
Tekst snor
}

funcvigtigste() {
// Definer skabelonen
tmpl := `



{{.Titel}}


{{.Overskrift}}


{{.Tekst}}



`

// Definer de data, der skal bruges i skabelonen
web := webside{
Titel: "En eksempelside",
Overskrift: "Velkommen til min hjemmeside!",
Tekst: "Dette er startsiden for min hjemmeside.",
}

// Opret en ny skabelon og parse skabelonstrengen
t, fejl := skabelon. Ny("hjemmeside").Parse (tmpl)
hvis fejl!= nul {
panik(fejl)
}

// Udfør skabelonen og skriv resultatet til stdout
fejl = t. Udfør (os. Stdout, web)
hvis fejl!= nul {
panik(fejl)
}
}

Det tmpl variabel indeholder HTML-strengen. HTML-strengen bruger Go-skabelonsyntaks til at definere sidetitlen, en h1 overskrift og et tekstafsnit. Det hjemmeside struct definerer datafelterne for websiden med Titel, Overskrift, og Tekst felter.

Det Parse metoden til Ny skabelonpakkens funktion opretter og analyserer en ny skabelon med skabelonstrengen. Det Udfør funktion af den nye skabeloninstans udfører skabelonen med dataene fra din struct-instans og returnerer resultatet til standardoutputtet (i dette tilfælde udskriver den resultatet til konsollen).

Byg webapplikationer med Go

At lære om at parse og generere HTML med Go er et skridt i den rigtige retning mod at bygge mere sofistikerede webapplikationer med Go. Du kan bruge rammer som Gin og Echo og routere som Gorilla Mux og Chi Router til at bygge serversiden af ​​dit web Ansøgning.

Disse pakker er bygget på net/http pakke (den indbyggede pakke til interaktion med HTTP in Go) og abstrahere kompleksiteten ved opsætning af servere og routere i Go.