Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Parsing er å analysere og tolke et dokuments struktur. Parsingsprosessen kan inkludere å trekke ut spesifikke elementer, attributter eller data fra dokumentet og verifisere at dokumentet er godt formatert mens du følger spesifikke standarder eller regler. Parsing brukes hovedsakelig for å trekke ut data fra nettsider eller manipulere strukturen til nettsider før de vises til brukere.

Go tilbyr pakker for arbeid med dokumenter, inkludert HTML- og XML-formatene som er populært brukt på nettsider. De html pakken inneholder funksjoner for tokenisering og analysering av HTML.

HTML-pakken

De html pakken gir en HTML5-kompatibel tokenizer og parser for å analysere og manipulere HTML-dokumenter, krysse parsetreet og manipulere trestrukturen. De html pakken er en innebygd pakke av Gos standardbibliotek.

En av hovedtrekkene til html pakken er Parse funksjon som kan analysere HTML-dokumenter og returnere rotnoden til analysetreet, hvorfra du kan bruke funksjoner som

Første barn og NesteSøsken for å navigere i treet og trekke ut informasjon fra dokumentet. Pakken gir også ParseFragment funksjon for å analysere fragmenter av HTML-dokumenter.

De EscapeString funksjonen er nyttig for å unnslippe spesialtegn i strenger for sikrere inkludering i HTML; du kan bruke denne funksjonen for å forhindre cross-site scripting (XSS) angrep ved å konvertere spesialtegn til deres tilsvarende HTML-enheter.

For å komme i gang med html pakken, kan du importere pakken til Go-prosjektfilene dine.

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

De html pakken gir ingen funksjoner for å generere HTML. I stedet kan du bruke html/malpakke, som tilbyr et sett med funksjoner for å generere HTML-maler. De html/mal pakken gir en funksjon mal. HTMLEscape for å skrive rømte versjoner av HTML til en responsforfatter.

De html/mal pakken er også en del av standardbiblioteket, og her er hvordan du kan importere pakken.

import"html/mal"

De html pakken er den mest brukte malpakken i Go-økosystemet og støtter ulike operasjoner og datatyper.

Parsing HTML i Go

De Parse funksjonen til html pakken hjelper med å analysere HTML-tekst og dokumenter. De Parse funksjon tar inn en io. Leser forekomst da det er et første argument som inneholder fildokumentet og en *html. Node instans, som er rotnoden til HTML-dokumentet

Her er hvordan du kan bruke Parse funksjon for å analysere en nettside og returnere alle URL-ene på nettsiden.

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

funchoved-() {
// Send en HTTP GET-forespørsel til example.com-nettsiden
resp, feil := http. Få(" https://www.example.com")
hvis feil!= null {
fmt. Println("Feil:", feil)
komme tilbake
}
utsette hhv. Kropp. Lukk()

// Bruk html-pakken til å analysere svarteksten fra forespørselen
doc, feil := html. Parse (hv. Kropp)
hvis feil!= null {
fmt. Println("Feil:", feil)
komme tilbake
}


// Finn og skriv ut alle lenker på nettsiden
var lenker []streng
var link func(*html. node)
link = func(n *html. node) {
hvis n. Skriv inn == html. ElementNode && n. Data == "en" {
til _, en := område n. Attr {
hvis en. Nøkkel == "href" {
// legger til en ny lenkeoppføring når attributtet samsvarer
lenker = legge til(lenker, a. Val)
}
}
}

// krysser HTML-en til nettsiden fra den første undernoden
til c := n. Første barn; c != null; c = c. Nestesøsken {
lenke (c)
}
}
link (doc)

// går gjennom lenkestykket
til _, l := område linker {
fmt. Println("Link:", l)
}
}

De hoved- funksjonen sender en HTTP GET-forespørsel til nettstedet med funksjonen til http pakke og henter sidens svartekst. De Parse funksjonen til html pakken analyserer svarteksten og returnerer HTML-dokumentet.

De lenker variabel er stykket av strenger som vil holde URL-ene fra nettsiden. De link funksjonen tar inn pekerreferansen til Node metode for html pakken, og Nøkkel metoden for attributtforekomsten fra noden returnerer data som finnes i et spesifisert attributt (i dette tilfellet, href). Funksjonen går gjennom dokumentet med NesteSøsken metode fra Første barn node for å skrive ut hver URL på nettsiden. Til slutt skriver for-løkken ut alle URL-ene fra lenker skive.

Her er resultatet av operasjonen.

Generer HTML i Go

De html/mal pakken gir et sett med funksjoner for sikker og effektiv parsing og utførelse av HTML-maler. Pakken er designet for bruk i forbindelse med html pakke, som gir funksjoner for å analysere og manipulere HTML.

Du kan generere HTML for gjengivelse på serversiden med html/mal pakke. Generering av HTML er nyttig for mange brukstilfeller som sending av e-poster, frontend-gjengivelse på serversiden og mange flere. Du kan bruke innebygde Go-datatyper som kart og strukturer for å samhandle og manipulere HTML-en til nettsiden din.

Du må forstå Gå til HTML-malsyntaks for å lykkes med å generere HTML med html/mal pakke.

import (
"html/mal"
"os"
)

type nettside struktur {
Tittel streng
Overskrift streng
Tekst streng
}

funchoved-() {
// Definer malen
tmpl := `



{{.Tittel}}


{{.Overskrift}}


{{.Tekst}}



`

// Definer dataene som skal brukes i malen
nett := nettside{
Tittel: "En eksempelside",
Overskrift: "Velkommen til nettstedet mitt!",
Tekst: "Dette er hjemmesiden til nettstedet mitt.",
}

// Lag en ny mal og analyser malstrengen
t, feil := mal. Ny("nettside").Parse (tmpl)
hvis feil!= null {
panikk(feil)
}

// Kjør malen og skriv resultatet til stdout
feile = t. Utfør (os. Stdout, web)
hvis feil!= null {
panikk(feil)
}
}

De tmpl variabelen inneholder HTML-strengen. HTML-strengen bruker Go-malsyntaks for å definere sidetittelen, en h1 topptekst og et avsnitt med tekst. De nettside struct definerer datafeltene for nettsiden med Tittel, Overskrift, og Tekst Enger.

De Parse metoden for Ny funksjonen til malpakken oppretter og analyserer en ny mal med malstrengen. De Henrette funksjonen til den nye malforekomsten kjører malen med dataene fra struct-forekomsten og returnerer resultatet til standardutdata (i dette tilfellet skriver den ut resultatet til konsollen).

Bygg nettapplikasjoner med Go

Å lære om å analysere og generere HTML med Go er ett skritt i riktig retning mot å bygge mer sofistikerte nettapplikasjoner med Go. Du kan bruke rammeverk som Gin og Echo og rutere som Gorilla Mux og Chi Router for å bygge serversiden av nettet ditt applikasjon.

Disse pakkene er bygget på net/http pakke (den innebygde pakken for samhandling med HTTP in Go) og abstrahere kompleksiteten ved å sette opp servere og rutere i Go.