Parsing je analýza a interpretace struktury dokumentu. Proces analýzy může zahrnovat extrahování specifických prvků, atributů nebo dat z dokumentu a ověření, že dokument je správně naformátován při dodržení specifických standardů nebo pravidel. Analýza se používá hlavně pro extrakci dat z webových stránek nebo manipulaci se strukturou webových stránek před jejich zobrazením uživatelům.
Go poskytuje balíčky pro práci s dokumenty, včetně formátů HTML a XML, které se běžně používají na webových stránkách. The html balíček poskytuje funkce pro tokenizaci a analýzu HTML.
Balíček HTML
The html balíček poskytuje tokenizér a analyzátor kompatibilní s HTML5 pro analýzu a manipulaci s dokumenty HTML, procházení stromem analýzy a manipulaci se stromovou strukturou. The html package je vestavěný balíček standardní knihovny Go.
Jedním z hlavních rysů
html balíček je Analyzovat funkce, která dokáže analyzovat dokumenty HTML a vrátit kořenový uzel stromu analýzy, odkud můžete používat funkce jako První dítě a DalšíSourozenec pro procházení stromu a extrahování informací z dokumentu. Balíček také poskytuje ParseFragment funkce pro analýzu fragmentů HTML dokumentů.The EscapeString funkce je užitečná pro escapování speciálních znaků v řetězcích pro bezpečnější zahrnutí do HTML; můžete tuto funkci použít k zabránění skriptování mezi stránkami (XSS) útoky převodem speciálních znaků na jejich odpovídající HTML entity.
Chcete-li začít s html balíček, můžete balíček importovat do souborů projektu Go.
import"golang.org/x/net/html"
The html balíček neposkytuje žádné funkce pro generování HTML. Místo toho můžete použít balíček html/template, který nabízí sadu funkcí pro generování HTML šablon. The html/šablona balíček poskytuje funkci šablona. HTMLEscape pro zápis uniklých verzí HTML do zapisovače odpovědí.
The html/šablona balíček je také součástí standardní knihovny a takto můžete balíček importovat.
import"html/šablona"
The html package je nejpoužívanějším balíčkem šablon v ekosystému Go a podporuje různé operace a datové typy.
Analýza HTML v Go
The Analyzovat funkce html balíček pomáhá s analýzou HTML textu a dokumentů. The Analyzovat funkce přijímá an io. Čtenář instance, protože je to první argument obsahující souborový dokument a *html. Uzel instance, což je kořenový uzel dokumentu HTML
Zde je návod, jak můžete použít Analyzovat funkci analyzovat webovou stránku a vrátit všechny adresy URL na webové stránce.
import (
"fmt"
"golang.org/x/net/html"
"net/http"
)funchlavní() {
// Odešle požadavek HTTP GET na webovou stránku example.com
resp, chyba := http. Dostat(" https://www.example.com")
-li chyba!= nula {
fmt. Println("Chyba:", chyba)
vrátit se
}
odložit resp. Tělo. Zavřít()// K analýze těla odpovědi z požadavku použijte balíček html
doc, chyba := html. Parsovat (resp. Tělo)
-li chyba!= nula {
fmt. Println("Chyba:", chyba)
vrátit se
}
// Najděte a vytiskněte všechny odkazy na webové stránce
var Odkazy []tětiva
var odkaz func(*html. Uzel)
odkaz = func(n *html. Uzel) {
-li n. Typ == html. ElementNode && n. Data == "A" {
pro _, a:= rozsah n. attr {
-li A. Klíč == "href" {
// přidá nový odkaz, když se atribut shoduje
odkazy = připojit(odkazy, a. Val)
}
}
}// prochází HTML webové stránky od prvního podřízeného uzlu
pro c := n. První dítě; c != nula; c = c. DalšíSourozenec {
odkaz (c)
}
}
odkaz (doc)
// prochází řezem odkazů
pro _, l:= rozsah Odkazy {
fmt. Println("Odkaz:", l)
}
}
The hlavní funkce odešle požadavek HTTP GET na webovou stránku s Dostat funkce http balíček a načte tělo odpovědi stránky. The Analyzovat funkce html package analyzuje tělo odpovědi a vrátí dokument HTML.
The Odkazy proměnná je část řetězců, které budou obsahovat adresy URL z webové stránky. The odkaz funkce převezme odkaz ukazatele na Uzel metoda pro html balíček a Klíč metoda instance atributu z uzlu vrací data obsažená v zadaném atributu (v tomto případě href). Funkce prochází dokument s DalšíSourozenec metoda z První dítě uzel pro tisk každé adresy URL na webové stránce. Nakonec cyklus for vytiskne všechny adresy URL z Odkazy plátek.
Zde je výsledek operace.
Generování HTML v Go
The html/šablona balíček poskytuje sadu funkcí pro bezpečnou a efektivní analýzu a provádění HTML šablon. Balíček je navržen pro použití ve spojení s html balíček, který poskytuje funkce pro analýzu a manipulaci s HTML.
Můžete generovat HTML pro vykreslování na straně serveru pomocí html/šablona balík. Generování HTML je užitečné pro mnoho případů použití, jako je odesílání e-mailů, vykreslování frontendu na straně serveru a mnoho dalších. K interakci a manipulaci s kódem HTML vaší webové stránky můžete používat vestavěné datové typy Go, jako jsou mapy a struktury.
budete muset pochopit Go syntaxe šablon HTML úspěšně vygenerovat HTML pomocí html/šablona balík.
import (
"html/šablona"
"os"
)typ webová stránka strukturovat {
Titul tětiva
Nadpis tětiva
Text tětiva
}funchlavní() {
// Definujte šablonu
tmpl := `{{.Titul}} {{.Nadpis}}
{{.Text}}
`// Definujte data, která mají být použita v šabloně
web := webová stránka{
Titul: "Ukázková stránka",
Nadpis: "Vítejte na mém webu!",
Text: "Toto je domovská stránka mého webu.",
}// Vytvořte novou šablonu a analyzujte řetězec šablony
t, chyba:= šablona. Nový("webová stránka").Parse (tmpl)
-li chyba!= nula {
panika(chybovat)
}
// Spusťte šablonu a zapište výsledek do stdout
chyba = t. Provést (os. Stdout, web)
-li chyba!= nula {
panika(chybovat)
}
}
The tmpl proměnná obsahuje řetězec HTML. Řetězec HTML používá syntaxi šablony Go k definování názvu stránky, an h1 záhlaví a odstavec textu. The webová stránka struct definuje datová pole pro webovou stránku s Titul, Nadpis, a Text pole.
The Analyzovat metoda Nový funkce balíčku šablon vytvoří a analyzuje novou šablonu s řetězcem šablony. The Vykonat funkce nové instance šablony provede šablonu s daty z vaší instance struct a vrátí výsledek na standardní výstup (v tomto případě vytiskne výsledek do konzoly).
Vytvářejte webové aplikace s Go
Naučit se analyzovat a generovat HTML pomocí Go je jedním krokem správným směrem k vytváření sofistikovanějších webových aplikací s Go. K vytvoření serverové strany vašeho webu můžete použít frameworky jako Gin a Echo a routery jako Gorilla Mux a Chi Router. aplikace.
Tyto balíčky jsou postaveny na net/http balíček (vestavěný balíček pro interakci s HTTP v Go) a abstrahují od složitosti nastavení serverů a směrovačů v Go.