Nagrinėjimas – tai dokumento struktūros analizavimas ir interpretavimas. Analizavimo procesas gali apimti konkrečių elementų, atributų ar duomenų ištraukimą iš dokumento ir patikrinimą, ar dokumentas yra gerai suformatuotas, laikantis konkrečių standartų ar taisyklių. Nagrinėjimas daugiausia naudojamas duomenims iš tinklalapių išgauti arba tinklalapių struktūrai manipuliuoti prieš pateikiant juos vartotojams.
„Go“ teikia paketus, skirtus darbui su dokumentais, įskaitant HTML ir XML formatus, plačiai naudojamus tinklalapiuose. The html paketas suteikia HTML žymėjimo ir analizavimo funkcijas.
HTML paketas
The html Paketas suteikia su HTML5 suderinamą prieigos raktą ir analizatorių, skirtą analizuoti ir valdyti HTML dokumentus, pereiti per analizavimo medį ir manipuliuoti medžio struktūra. The html paketas yra integruotas Go standartinės bibliotekos paketas.
Viena iš pagrindinių savybių html paketas yra Išanalizuoti funkcija, kuri gali išanalizuoti HTML dokumentus ir grąžinti šakninį analizavimo medžio mazgą, iš kurio galite naudoti tokias funkcijas kaip Pirmas vaikas ir Kitas Sesuo naršyti medį ir išgauti informaciją iš dokumento. Pakuotėje taip pat pateikiama ParseFragment funkcija, skirta HTML dokumentų fragmentams analizuoti.
The EscapeString funkcija yra patogi norint išvengti specialių simbolių eilutėse, kad būtų saugesnis įtraukimas į HTML; galite naudoti šią funkciją, kad išvengtumėte kelių svetainių scenarijus (XSS) atakų konvertuojant specialiuosius simbolius į atitinkamus HTML objektus.
Norėdami pradėti su html paketą, galite importuoti paketą į savo Go projekto failus.
importuoti„golang.org/x/net/html“
The html paketas nesuteikia jokių HTML generavimo funkcijų. Vietoj to galite naudoti html/template paketą, kuris siūlo HTML šablonų generavimo funkcijų rinkinį. The html/šablonas paketas suteikia funkciją šabloną. HTMLEscape HTML pabėgėlių versijų rašymui atsakymo rašytojui.
The html/šablonas paketas taip pat yra standartinės bibliotekos dalis, ir štai kaip galite importuoti paketą.
importuoti"html/šablonas"
The html paketas yra populiariausias Go ekosistemoje naudojamas šablonų paketas ir palaiko įvairias operacijas bei duomenų tipus.
HTML analizė Go
The Išanalizuoti funkcija html paketas padeda analizuoti HTML tekstą ir dokumentus. The Išanalizuoti funkcija paima an io. Skaitytojas pavyzdys, nes tai pirmasis argumentas, kuriame yra failo dokumentas ir *html. Mazgas egzempliorius, kuris yra HTML dokumento šakninis mazgas
Štai kaip galite naudoti Išanalizuoti funkcija išanalizuoti tinklalapį ir grąžinti visus tinklalapio URL adresus.
importuoti (
"fmt"
„golang.org/x/net/html“
"net/http"
)funcpagrindinis() {
// Siųsti HTTP GET užklausą į example.com tinklalapį
resp, klaida := http. Gauti (" https://www.example.com")
jeigu klysta! = nulis {
fmt. Println("Klaida:", klaida)
grąžinti
}
atidėti resp. Kūnas. Uždaryti()// Naudokite html paketą, kad išanalizuoti atsakymo turinį iš užklausos
doc, err := html. Išnagrinėti (atitinkamai. Kūnas)
jeigu klysta! = nulis {
fmt. Println("Klaida:", klaida)
grąžinti
}
// Suraskite ir atsispausdinkite visas nuorodas tinklalapyje
var nuorodos []styga
var nuoroda func(*html. Mazgas)
nuoroda = func(n *html. Mazgas) {
jeigu n. Įveskite == html. ElementNode && n. Duomenys == "a" {
dėl _, a := diapazonas n. Attr {
jeigu a. Raktas == "href" {
// prideda naują nuorodos įrašą, kai atributas atitinka
nuorodos = pridėti(nuorodos, a. Val)
}
}
}// eina tinklalapio HTML nuo pirmojo antrinio mazgo
dėl c := n. Pirmas vaikas; c != nulis; c = c. Kitas brolis {
nuoroda (c)
}
}
nuoroda (doc)
// kilpos per nuorodų skiltį
dėl _, l := diapazonas nuorodos {
fmt. Println("Nuoroda:", l)
}
}
The pagrindinis funkcija siunčia HTTP GET užklausą svetainei su Gauk funkcija http paketą ir nuskaito puslapio atsakymo turinį. The Išanalizuoti funkcija html paketas analizuoja atsakymo turinį ir grąžina HTML dokumentą.
The nuorodos kintamasis yra eilučių dalis, kurioje bus tinklalapio URL. The nuoroda funkcija perima žymeklio nuorodą į Mazgas metodas skirtas html paketą ir Raktas atributo egzemplioriaus metodas iš mazgo grąžina duomenis, esančius nurodytame atribute (šiuo atveju, href). Funkcija eina per dokumentą su Kitas Sesuo metodas iš Pirmas vaikas mazgas, kad būtų spausdinamas kiekvienas tinklalapio URL. Galiausiai for ciklas spausdina visus URL adresus iš nuorodos gabalas.
Štai operacijos rezultatas.
HTML generavimas naudojant Go
The html/šablonas Paketas suteikia funkcijų rinkinį saugiam ir efektyviam HTML šablonų analizei ir vykdymui. Pakuotė skirta naudoti kartu su html paketą, kuriame pateikiamos HTML analizės ir manipuliavimo funkcijos.
Galite sugeneruoti HTML serverio atvaizdavimui naudodami html/šablonas paketą. HTML generavimas yra patogus daugeliu atvejų, pvz., el. laiškų siuntimui, serverio sąsajos atvaizdavimui ir daugeliu kitų. Galite naudoti integruotus Go duomenų tipus, pvz., žemėlapius ir struktūras, kad galėtumėte sąveikauti ir valdyti savo tinklalapio HTML.
Jums reikės suprasti Eikite į HTML šablonų sintaksę Norėdami sėkmingai sugeneruoti HTML naudodami html/šablonas paketą.
importuoti (
"html/šablonas"
"os"
)tipo tinklo puslapis struktūra {
Pavadinimas styga
Antraštė styga
Tekstas styga
}funcpagrindinis() {
// Apibrėžkite šabloną
tmpl := `{{.Pavadinimas}} {{.Antraštė}}
{{.Tekstas}}
`// Apibrėžkite duomenis, kurie bus naudojami šablone
žiniatinklis := tinklalapis{
Pavadinimas: „Puslapio pavyzdys“,
Antraštė: "Sveiki atvykę į mano svetainę!",
Tekstas: "Tai yra mano svetainės pagrindinis puslapis.",
}// Sukurkite naują šabloną ir analizuokite šablono eilutę
t, err := šablonas. Naujas ("tinklo puslapis").Išanalizuoti (tmpl)
jeigu klysta! = nulis {
panika(klaida)
}
// Vykdykite šabloną ir parašykite rezultatą į stdout
klaida = t. Vykdyti (os. Stdout, žiniatinklis)
jeigu klysta! = nulis {
panika(klaida)
}
}
The tmpl kintamasis turi HTML eilutę. HTML eilutė naudoja Go šablono sintaksę, kad apibrėžtų puslapio pavadinimą, an h1 antraštę ir teksto pastraipą. The tinklo puslapis struct apibrėžia tinklalapio duomenų laukus su Pavadinimas, Antraštė, ir Tekstas laukai.
The Išanalizuoti metodas Nauja šablono paketo funkcija sukuria ir analizuoja naują šabloną su šablono eilute. The Vykdyti naujo šablono egzemplioriaus funkcija vykdo šabloną su duomenimis iš jūsų struct egzemplioriaus ir grąžina rezultatą į standartinę išvestį (šiuo atveju jis išspausdina rezultatą į konsolę).
Kurkite žiniatinklio programas naudodami „Go“.
Mokymasis analizuoti ir generuoti HTML naudojant „Go“ yra vienas žingsnis teisinga kryptimi kuriant sudėtingesnes žiniatinklio programas. su Go. Galite naudoti sistemas, tokias kaip Gin ir Echo, ir maršrutizatorius, pvz., Gorilla Mux ir Chi Router, kad sukurtumėte savo žiniatinklio serverio pusę taikymas.
Šie paketai yra sukurti ant net/http paketą (įtaisytąjį paketą, skirtą sąveikauti su HTTP sistemoje „Go“) ir abstrakčiai apibūdinti serverių ir maršrutizatorių nustatymo sudėtingumą sistemoje „Go“.