Parsing is het analyseren en interpreteren van de structuur van een document. Het ontleedproces kan bestaan uit het extraheren van specifieke elementen, attributen of gegevens uit het document en het verifiëren dat het document goed is opgemaakt volgens specifieke normen of regels. Parsing wordt voornamelijk gebruikt voor het extraheren van gegevens van webpagina's of het manipuleren van de structuur van webpagina's voordat deze aan gebruikers worden weergegeven.
Go biedt pakketten voor het werken met documenten, inclusief de HTML- en XML-indelingen die in de volksmond op webpagina's worden gebruikt. De html pakket biedt functies voor het tokeniseren en parseren van HTML.
Het HTML-pakket
De html pakket biedt een HTML5-compatibele tokenizer en parser voor het ontleden en manipuleren van HTML-documenten, het doorlopen van de ontleedboom en het manipuleren van de boomstructuur. De
html pakket is een ingebouwd pakket van de standaardbibliotheek van Go.Een van de belangrijkste kenmerken van de html pakket is de Ontleed functie die HTML-documenten kan ontleden en het hoofdknooppunt van de ontleedboom kan retourneren, van waaruit u functies zoals de Eerstgeborene En VolgendeBroer of zus om door de boomstructuur te navigeren en informatie uit het document te extraheren. Het pakket biedt ook de ParseFragment functie voor het ontleden van fragmenten van HTML-documenten.
De Ontsnappingsreeks functie is handig voor het ontsnappen van speciale tekens in tekenreeksen voor veiligere opname in HTML; u kunt deze functie gebruiken om te voorkomen cross-site scripting (XSS) aanvallen door speciale tekens om te zetten in hun overeenkomstige HTML-entiteiten.
Om aan de slag te gaan met de html pakket, kunt u het pakket importeren in uw Go-projectbestanden.
importeren"golang.org/x/net/html"
De html pakket biedt geen functies voor het genereren van HTML. In plaats daarvan kunt u het pakket html/template gebruiken, dat een reeks functies biedt voor het genereren van HTML-sjablonen. De html/sjabloon pakket biedt een functie sjabloon. HTMLEscape voor het schrijven van ontsnapte versies van HTML naar een antwoordschrijver.
De html/sjabloon pakket maakt ook deel uit van de standaardbibliotheek, en hier ziet u hoe u het pakket kunt importeren.
importeren"html/sjabloon"
De html pakket is het meest gebruikte sjabloonpakket in het Go-ecosysteem en ondersteunt verschillende bewerkingen en gegevenstypen.
HTML parseren in Go
De Ontleed functie van de html pakket helpt bij het ontleden van HTML-tekst en documenten. De Ontleed functie neemt een io. Lezer instantie omdat het een eerste argument is dat het bestandsdocument bevat en een *html. Knooppunt instance, het hoofdknooppunt van het HTML-document
Hier ziet u hoe u de Ontleed functie om een webpagina te ontleden en alle URL's op de webpagina te retourneren.
importeren (
"fmt"
"golang.org/x/net/html"
"net/http"
)funcvoornaamst() {
// Stuur een HTTP GET-verzoek naar de voorbeeld.com-webpagina
resp, fout := http. Krijgen(" https://www.example.com")
als fout!= nihil {
fmt. Println("Fout:", fout)
opbrengst
}
verschuiven resp. Lichaam. Dichtbij()// Gebruik het html-pakket om de antwoordtekst van het verzoek te ontleden
doc, fout := html. Ontleed (resp. Lichaam)
als fout!= nihil {
fmt. Println("Fout:", fout)
opbrengst
}
// Zoek en print alle links op de webpagina
var koppelingen []snaar
var koppeling func(*html. Knooppunt)
koppeling = func(n *html. Knooppunt) {
als N. Typ == html. ElementNode && n. Gegevens == "A" {
voor _, een := bereik N. Attr {
als A. Sleutel == "href" {
// voegt een nieuw linkitem toe wanneer het attribuut overeenkomt
koppelingen = toevoegen(links, een. Val)
}
}
}// doorloopt de HTML van de webpagina vanaf het eerste onderliggende knooppunt
voor c := zn. Eerstgeborene; c!= nihil; c = c. VolgendeBroer of zus {
koppeling (c)
}
}
link (document)
// doorloopt het links-segment
voor _, ik := bereik koppelingen {
fmt. Println("Koppeling:", ik)
}
}
De voornaamst functie stuurt een HTTP GET-verzoek naar de website met de Krijgen functie van de http pakket en haalt de hoofdtekst van het paginaantwoord op. De Ontleed functie van de html package ontleedt de hoofdtekst van het antwoord en retourneert het HTML-document.
De koppelingen variabele is het stuk strings dat de URL's van de webpagina zal bevatten. De koppeling functie neemt de verwijzing naar de Knooppunt methode voor de html pakket, en de Sleutel methode van de attribuutinstantie van het knooppunt retourneert gegevens die zijn opgenomen in een opgegeven attribuut (in dit geval href). De functie doorloopt het document met de VolgendeBroer of zus methode uit de Eerstgeborene node om elke URL op de webpagina af te drukken. Ten slotte drukt de for-lus alle URL's af van de koppelingen plak.
Hier is het resultaat van de operatie.
HTML genereren in Go
De html/sjabloon pakket biedt een reeks functies voor het veilig en efficiënt ontleden en uitvoeren van HTML-sjablonen. Het pakket is ontworpen voor gebruik in combinatie met de html pakket, dat functies biedt voor het ontleden en manipuleren van HTML.
U kunt HTML genereren voor server-side rendering met de html/sjabloon pakket. Het genereren van HTML is handig voor veel gebruiksscenario's, zoals het verzenden van e-mails, server-side frontend-rendering en nog veel meer. U kunt ingebouwde Go-gegevenstypen zoals kaarten en structuren gebruiken om te communiceren en de HTML van uw webpagina te manipuleren.
Je moet het begrijpen Ga naar de syntaxis van HTML-templates om met succes HTML te genereren met de html/sjabloon pakket.
importeren (
"html/sjabloon"
"os"
)type webpagina structuur {
Titel snaar
Rubriek snaar
Tekst snaar
}funcvoornaamst() {
// Definieer de sjabloon
tmpl := `{{.Titel}} {{.Kop}}
{{.Tekst}}
`// Definieer de gegevens die in de sjabloon moeten worden gebruikt
web := webpagina{
Titel: "Een voorbeeldpagina",
rubriek: "Welkom op mijn website!",
Tekst: "Dit is de startpagina van mijn website.",
}// Maak een nieuwe sjabloon en analyseer de tekenreeks van de sjabloon
t, fout := sjabloon. Nieuw("webpagina").Ontleden (tmpl)
als fout!= nihil {
paniek(fout)
}
// Voer de sjabloon uit en schrijf het resultaat naar stdout
fout = t. Uitvoeren (o.a. Stout, web)
als fout!= nihil {
paniek(fout)
}
}
De tmpl variabele bevat de HTML-tekenreeks. De HTML-tekenreeks gebruikt Go-templating-syntaxis om de paginatitel, een h1 koptekst en een alinea tekst. De webpagina struct definieert de gegevensvelden voor de webpagina met de Titel, Rubriek, En Tekst velden.
De Ontleed methode van de Nieuw De functie van het sjabloonpakket maakt en ontleedt een nieuw sjabloon met de sjabloontekenreeks. De Uitvoeren functie van de nieuwe sjablooninstantie voert de sjabloon uit met de gegevens van uw struct-instantie en retourneert het resultaat naar de standaarduitvoer (in dit geval drukt het het resultaat af naar de console).
Bouw webapplicaties met Go
Leren over het parseren en genereren van HTML met Go is een stap in de goede richting naar het bouwen van meer geavanceerde webapplicaties met Ga. U kunt frameworks zoals Gin en Echo en routers zoals Gorilla Mux en de Chi Router gebruiken om de serverkant van uw web te bouwen sollicitatie.
Deze pakketten zijn gebouwd op de net/http pakket (het ingebouwde pakket voor interactie met HTTP in Go) en vat de complexiteit samen van het instellen van servers en routers in Go.