Att analysera är att analysera och tolka ett dokuments struktur. Parsingprocessen kan innefatta att extrahera specifika element, attribut eller data från dokumentet och verifiera att dokumentet är välformaterat samtidigt som specifika standarder eller regler följer. Parsing används främst för att extrahera data från webbsidor eller manipulera webbsidors struktur innan de visas för användare.
Go tillhandahåller paket för att arbeta med dokument, inklusive HTML- och XML-formaten som ofta används på webbsidor. De html paketet tillhandahåller funktioner för tokenisering och analys av HTML.
HTML-paketet
De html paketet tillhandahåller en HTML5-kompatibel tokenizer och parser för att analysera och manipulera HTML-dokument, korsning av analysträdet och manipulering av trädstrukturen. De html paket är ett inbyggt paket av Gos standardbibliotek.
En av huvuddragen i
html paketet är Analysera funktion som kan analysera HTML-dokument och returnera rotnoden för analysträdet, varifrån du kan använda funktioner som Förstfödde och NästaSyskon för att navigera i trädet och extrahera information från dokumentet. Paketet ger också ParseFragment funktion för att analysera fragment av HTML-dokument.De EscapeString funktion är praktisk för att undvika specialtecken i strängar för säkrare inkludering i HTML; du kan använda den här funktionen för att förhindra cross-site scripting (XSS) attacker genom att konvertera specialtecken till deras motsvarande HTML-enheter.
För att komma igång med html paket, kan du importera paketet till dina Go-projektfiler.
importera"golang.org/x/net/html"
De html paketet tillhandahåller inga funktioner för att generera HTML. Istället kan du använda html/template package, som erbjuder en uppsättning funktioner för att generera HTML-mallar. De html/mall paket ger en funktion mall. HTMLEscape för att skriva escaped versioner av HTML till en svarsskribent.
De html/mall paketet är också en del av standardbiblioteket, och så här kan du importera paketet.
importera"html/mall"
De html paket är det mest populära mallpaketet i Go-ekosystemet och stöder olika operationer och datatyper.
Parsar HTML i Go
De Analysera funktion av html paketet hjälper till med att analysera HTML-text och dokument. De Analysera funktion tar in en io. Läsare instans eftersom det är ett första argument som innehåller fildokumentet och en *html. Nod instans, som är rotnoden för HTML-dokumentet
Så här kan du använda Analysera funktion för att analysera en webbsida och returnera alla webbadresser på webbsidan.
importera (
"fmt"
"golang.org/x/net/html"
"net/http"
)funchuvud() {
// Skicka en HTTP GET-förfrågan till webbsidan example.com
resp, fel := http. Skaffa sig(" https://www.example.com")
om fel!= noll {
fmt. Println("Fel:", fel)
lämna tillbaka
}
uppskjuta resp. Kropp. Stänga()// Använd html-paketet för att analysera svarstexten från begäran
doc, fel := html. Analysera (resp. Kropp)
om fel!= noll {
fmt. Println("Fel:", fel)
lämna tillbaka
}
// Hitta och skriv ut alla länkar på webbsidan
var länkar []sträng
var länk func(*html. Nod)
länk = func(n *html. Nod) {
om n. Skriv == html. ElementNode && n. Data == "a" {
för _, en := räckvidd n. Attr {
om a. Nyckel == "href" {
// lägger till en ny länkpost när attributet matchar
länkar = bifoga(länkar, a. Val)
}
}
}// korsar webbsidans HTML från den första underordnade noden
för c := n. Förstfödde; c != noll; c = c. NextSibling {
länk (c)
}
}
länk (doc)
// går igenom länkdelen
för _, l := räckvidd länkar {
fmt. Println("Länk:", l)
}
}
De huvud funktionen skickar en HTTP GET-förfrågan till webbplatsen med Skaffa sig funktion av http paketera och hämtar sidans svarstext. De Analysera funktion av html paketet analyserar svarstexten och returnerar HTML-dokumentet.
De länkar variabel är den del av strängar som kommer att hålla webbadresserna från webbsidan. De länk funktionen tar in pekarens referens till Nod metod för html paketet och Nyckel metod för attributinstansen från noden returnerar data som finns i ett specificerat attribut (i det här fallet, href). Funktionen går igenom dokumentet med NästaSyskon metod från Förstfödde nod för att skriva ut varje URL på webbsidan. Slutligen skriver for-loopen ut alla webbadresser från länkar skiva.
Här är resultatet av operationen.
Generera HTML i Go
De html/mall paketet tillhandahåller en uppsättning funktioner för säker och effektiv analys och exekvering av HTML-mallar. Paketet är utformat för att användas tillsammans med html paket, som tillhandahåller funktioner för att analysera och manipulera HTML.
Du kan generera HTML för rendering på serversidan med html/mall paket. Att generera HTML är praktiskt för många användningsfall som att skicka e-post, rendering av frontend på serversidan och många fler. Du får använda inbyggda Go-datatyper som kartor och strukturer för att interagera och manipulera HTML-koden på din webbsida.
Du måste förstå Gå till HTML-mallsyntax för att framgångsrikt generera HTML med html/mall paket.
importera (
"html/mall"
"os"
)typ webbsida struktur {
Titel sträng
Rubrik sträng
Text sträng
}funchuvud() {
// Definiera mallen
tmpl := `{{.Titel}} {{.Rubrik}}
{{.Text}}
`// Definiera data som ska användas i mallen
webb := webbsida{
Titel: "En exempelsida",
Rubrik: "Välkommen till min hemsida!",
Text: "Detta är startsidan för min webbplats.",
}// Skapa en ny mall och analysera mallsträngen
t, err := mall. Ny("webbsida").Parse (tmpl)
om fel!= noll {
panik(fela)
}
// Kör mallen och skriv resultatet till stdout
fel = t. Kör (os. Stdout, webb)
om fel!= noll {
panik(fela)
}
}
De tmpl variabeln innehåller HTML-strängen. HTML-strängen använder Go-mallsyntax för att definiera sidtiteln, en h1 rubrik och ett textstycke. De webbsida struct definierar datafälten för webbsidan med Titel, Rubrik, och Text fält.
De Analysera metod för Ny funktionen i mallpaketet skapar och analyserar en ny mall med mallsträngen. De Kör funktion för den nya mallinstansen exekverar mallen med data från din struct-instans och returnerar resultatet till standardutdata (i det här fallet skriver den ut resultatet till konsolen).
Bygg webbapplikationer med Go
Att lära sig att analysera och generera HTML med Go är ett steg i rätt riktning mot att bygga mer sofistikerade webbapplikationer med Go. Du kan använda ramverk som Gin och Echo och routrar som Gorilla Mux och Chi Router för att bygga serversidan av din webb Ansökan.
Dessa paket är byggda på net/http paket (det inbyggda paketet för att interagera med HTTP i Go) och abstraherar komplexiteten med att konfigurera servrar och routrar i Go.