Il parsing sta analizzando e interpretando la struttura di un documento. Il processo di analisi può includere l'estrazione di elementi, attributi o dati specifici dal documento e la verifica che il documento sia ben formattato seguendo norme o regole specifiche. L'analisi viene utilizzata principalmente per estrarre dati da pagine Web o manipolare la struttura delle pagine Web prima di mostrarle agli utenti.
Go fornisce pacchetti per lavorare con i documenti, inclusi i formati HTML e XML comunemente usati nelle pagine web. IL html Il pacchetto fornisce funzioni per la tokenizzazione e l'analisi dell'HTML.
Il pacchetto HTML
IL html Il pacchetto fornisce un tokenizer e un parser conformi a HTML5 per l'analisi e la manipolazione di documenti HTML, l'attraversamento dell'albero di analisi e la manipolazione della struttura ad albero. IL html package è un pacchetto integrato della libreria standard di Go.
Una delle caratteristiche principali del html pacchetto è il Analizza funzione che può analizzare documenti HTML e restituire il nodo radice dell'albero di analisi, da cui è possibile utilizzare funzioni come il Primogenito E AvantiFratello per navigare nell'albero ed estrarre informazioni dal documento. Il pacchetto fornisce anche il Analizza Frammento funzione per l'analisi di frammenti di documenti HTML.
IL EscapeString la funzione è utile per eseguire l'escape dei caratteri speciali nelle stringhe per un'inclusione più sicura nell'HTML; è possibile utilizzare questa funzione per prevenire cross-site scripting (XSS) attacca convertendo i caratteri speciali nelle corrispondenti entità HTML.
Per iniziare con il html pacchetto, è possibile importare il pacchetto nei file del progetto Go.
importare"golang.org/x/net/html"
IL html pacchetto non fornisce alcuna funzione per la generazione di HTML. Invece, puoi usare il pacchetto html/template, che offre una serie di funzioni per la generazione di modelli HTML. IL html/modello pacchetto fornisce una funzione modello. HTMLEscape per scrivere versioni con escape di HTML in uno scrittore di risposte.
IL html/modello package fa anche parte della libreria standard, ed ecco come importare il package.
importare"html/modello"
IL html package è il pacchetto di modelli utilizzato più comunemente nell'ecosistema Go e supporta varie operazioni e tipi di dati.
Analisi dell'HTML in Go
IL Analizza funzione del html package aiuta con l'analisi di testo e documenti HTML. IL Analizza la funzione accetta un io. Lettore istanza in quanto è un primo argomento contenente il documento del file e un *html. Nodo istanza, che è il nodo radice del documento HTML
Ecco come puoi usare il Analizza funzione per analizzare una pagina web e restituire tutti gli URL sulla pagina web.
importare (
"fmt"
"golang.org/x/net/html"
"rete/http"
)funzprincipale() {
// Invia una richiesta HTTP GET alla pagina web example.com
resp, err := http. Ottenere(" https://www.example.com")
Se errare!= zero {
fmt. Stampaln("Errore:", ehm)
ritorno
}
differire resp. Corpo. Vicino()// Utilizza il pacchetto html per analizzare il corpo della risposta dalla richiesta
doc, err := html. Analizzare (risp. Corpo)
Se errare!= zero {
fmt. Stampaln("Errore:", ehm)
ritorno
}
// Trova e stampa tutti i link sulla pagina web
var collegamenti []corda
var collegamento funz(*html. Nodo)
collegamento = funz(n*html. Nodo) {
Se N. Digita == html. ElementoNodo && n. Dati == "UN" {
per _, un := allineare N. Attr {
Se UN. Chiave == "ref" {
// aggiunge una nuova voce di collegamento quando l'attributo corrisponde
collegamenti = aggiungere(link, A. Vale)
}
}
}// attraversa l'HTML della pagina Web dal primo nodo figlio
per c := n. Primogenito; c!= zero; c = c. NextSibling {
collegamento (c)
}
}
link (documento)
// esegue un ciclo attraverso la sezione dei collegamenti
per _, l := allineare collegamenti {
fmt. Stampaln("Collegamento:", l)
}
}
IL principale La funzione invia una richiesta HTTP GET al sito Web con l'estensione Ottenere funzione del http pacchetto e recupera il corpo della risposta della pagina. IL Analizza funzione del html package analizza il corpo della risposta e restituisce il documento HTML.
IL link variabile è la porzione di stringhe che conterrà gli URL della pagina web. IL collegamento la funzione accetta il riferimento del puntatore a Nodo metodo per il html pacchetto e il Chiave metodo dell'istanza dell'attributo dal nodo restituisce i dati contenuti in un attributo specificato (in questo caso, href). La funzione attraversa il documento con il AvantiFratello metodo dal Primogenito node per stampare ogni URL sulla pagina web. Infine, il ciclo for stampa tutti gli URL dal file link fetta.
Ecco il risultato dell'operazione
Generazione di codice HTML in Go
IL html/modello Il pacchetto fornisce un insieme di funzioni per l'analisi e l'esecuzione sicure ed efficienti di modelli HTML. Il pacchetto è progettato per l'uso in combinazione con il html pacchetto, che fornisce funzioni per l'analisi e la manipolazione dell'HTML.
Puoi generare codice HTML per il rendering lato server con il file html/modello pacchetto. La generazione di HTML è utile per molti casi d'uso come l'invio di e-mail, il rendering frontend lato server e molti altri. Puoi utilizzare i tipi di dati Go incorporati come mappe e strutture per interagire e manipolare l'HTML della tua pagina web.
Dovrai capire Vai alla sintassi dei modelli HTML per generare correttamente HTML con il html/modello pacchetto.
importare (
"html/modello"
"os"
)tipo pagina web struct {
Titolo corda
Intestazione corda
Testo corda
}funzprincipale() {
// Definisci il modello
tmpl := `{{.Titolo}} {{.Intestazione}}
{{.Testo}}
`// Definisce i dati da utilizzare nel modello
web := pagina web{
Titolo: "Una pagina di esempio",
Intestazione: "Benvenuto nel mio sito web!",
Testo: "Questa è la home page del mio sito web.",
}// Crea un nuovo modello e analizza la stringa del modello
t, err := modello. Nuovo("pagina web").Parse (tmpl)
Se errare!= zero {
panico(errare)
}
// Esegue il modello e scrive il risultato in stdout
errare = t. Esegui (os. Standardout, web )
Se errare!= zero {
panico(errare)
}
}
IL tmpl la variabile contiene la stringa HTML. La stringa HTML utilizza la sintassi dei modelli Go per definire il titolo della pagina, an h1 intestazione e un paragrafo di testo. IL pagina web struct definisce i campi dati per la pagina Web con l'estensione Titolo, Intestazione, E Testo campi.
IL Analizza metodo del Nuovo La funzione del pacchetto modello crea e analizza un nuovo modello con la stringa del modello. IL Eseguire La funzione della nuova istanza del modello esegue il modello con i dati della tua istanza struct e restituisce il risultato allo standard output (in questo caso, stampa il risultato nella console).
Crea applicazioni Web con Go
Imparare l'analisi e la generazione di HTML con Go è un passo nella giusta direzione verso la creazione di applicazioni Web più sofisticate con Vai. Puoi utilizzare framework come Gin ed Echo e router come Gorilla Mux e Chi Router per creare il lato server del tuo web applicazione.
Questi pacchetti sono basati su rete/http pacchetto (il pacchetto integrato per l'interazione con HTTP in Go) e astrarre le complessità della configurazione di server e router in Go.