Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Raščlanjivanje je analiza i tumačenje strukture dokumenta. Proces raščlambe može uključivati ​​izdvajanje određenih elemenata, atributa ili podataka iz dokumenta i provjeru je li dokument dobro formatiran uz pridržavanje određenih standarda ili pravila. Raščlanjivanje se uglavnom koristi za izdvajanje podataka s web-stranica ili manipuliranje strukturom web-stranica prije prikazivanja korisnicima.

Go nudi pakete za rad s dokumentima, uključujući HTML i XML formate koji se popularno koriste na web stranicama. The html paket pruža funkcije za označavanje i raščlanjivanje HTML-a.

HTML paket

The html paket pruža tokenizer i parser usklađen s HTML5 za raščlanjivanje i manipuliranje HTML dokumentima, prelaženje stabla raščlanjivanja i manipuliranje strukturom stabla. The html paket je ugrađeni paket Goove standardne biblioteke.

Jedna od glavnih značajki html paket je

instagram viewer
Raščlanjivati funkcija koja može raščlaniti HTML dokumente i vratiti korijenski čvor stabla raščlanjivanja, odakle možete koristiti funkcije poput Prvodijete i Sljedeći brat za navigaciju stablom i izdvajanje informacija iz dokumenta. Paket također nudi ParseFragment funkcija za raščlanjivanje fragmenata HTML dokumenata.

The EscapeString funkcija je praktična za izbjegavanje posebnih znakova u nizovima za sigurnije uključivanje u HTML; ovu funkciju možete koristiti za sprječavanje skriptiranje između stranica (XSS) napade pretvaranjem posebnih znakova u njihove odgovarajuće HTML entitete.

Da biste započeli s html paket, možete uvesti paket u svoje datoteke Go projekta.

uvoz"golang.org/x/net/html"

The html paket ne pruža nikakve funkcije za generiranje HTML-a. Umjesto toga, možete koristiti paket html/template koji nudi skup funkcija za generiranje HTML predložaka. The html/predložak paket pruža funkciju šablona. HTMLEscape za pisanje izbjegnutih verzija HTML-a piscu odgovora.

The html/predložak paket također je dio standardne biblioteke, a evo kako možete uvesti paket.

uvoz"html/predložak"

The html paket je najčešće korišteni paket za izradu predložaka u Go ekosustavu i podržava različite operacije i vrste podataka.

Raščlanjivanje HTML-a u Go

The Raščlanjivati funkcija html paket pomaže u raščlanjivanju HTML teksta i dokumenata. The Raščlanjivati funkcija preuzima an io. Čitač instanca jer je to prvi argument koji sadrži dokument datoteke i *html. Čvor instanca, koja je korijenski čvor HTML dokumenta

Evo kako možete koristiti Raščlanjivati funkcija za raščlanjivanje web stranice i vraćanje svih URL-ova na web stranici.

uvoz (
"fmt"
"golang.org/x/net/html"
"net/http"
)

funkglavni() {
// Pošaljite HTTP GET zahtjev web stranici example.com
odn., pogriješiti := http. Dobiti(" https://www.example.com")
ako pogriješiti != nula {
fmt. Println("Pogreška:", pogreška)
povratak
}
odgoditi odn. Tijelo. Zatvoriti()

// Koristite html paket za analizu tijela odgovora iz zahtjeva
doc, greška := html. Raščlanjivanje (odn. Tijelo)
ako pogriješiti != nula {
fmt. Println("Pogreška:", pogreška)
povratak
}


// Pronađite i ispišite sve poveznice na web stranici
var veze []niz
var veza funk(*html. Čvor)
poveznica = funk(n *html. Čvor) {
ako n. Upišite == html. ElementNode && n. Podaci == "a" {
za _, a := domet n. Attr {
ako a. Ključ == "href" {
// dodaje novi unos veze kada atribut odgovara
poveznice = dodati(linkovi, a. Val)
}
}
}

// prelazi HTML web stranice od prvog podređenog čvora
za c := n. FirstChild; c != nula; c = c. NextSibling {
veza (c)
}
}
poveznica (doc)

// prolazi kroz odsječak veza
za _, l := domet veze {
fmt. Println("Veza:", l)
}
}

The glavni šalje HTTP GET zahtjev na web mjesto s Dobiti funkcija http paket i dohvaća tijelo odgovora stranice. The Raščlanjivati funkcija html paket analizira tijelo odgovora i vraća HTML dokument.

The poveznice varijabla je isječak nizova koji će sadržavati URL-ove s web stranice. The veza funkcija preuzima referencu pokazivača na Čvor metoda za html paket, i Ključ metoda instance atributa iz čvora vraća podatke sadržane u navedenom atributu (u ovom slučaju, href). Funkcija prelazi dokument s Sljedeći brat metoda iz Prvodijete čvor za ispis svakog URL-a na web stranici. Konačno, petlja for ispisuje sve URL-ove iz poveznice kriška.

Evo rezultata operacije.

Generiranje HTML-a u Go

The html/predložak paket pruža skup funkcija za sigurno i učinkovito analiziranje i izvođenje HTML predložaka. Paket je dizajniran za korištenje u kombinaciji s html paket koji pruža funkcije za raščlanjivanje i manipuliranje HTML-om.

Možete generirati HTML za iscrtavanje na strani poslužitelja pomoću html/predložak paket. Generiranje HTML-a je zgodno za mnoge slučajeve upotrebe kao što su slanje e-pošte, iscrtavanje sučelja na strani poslužitelja i još mnogo toga. Možete koristiti ugrađene Go vrste podataka kao što su karte i strukture za interakciju i manipuliranje HTML-om vaše web stranice.

Morat ćete razumjeti Go HTML sintaksa predložaka za uspješno generiranje HTML-a s html/predložak paket.

uvoz (
"html/predložak"
"os"
)

tip web stranica strukturirati {
Titula niz
Naslov niz
Tekst niz
}

funkglavni() {
// Definirajte predložak
tmpl := `



{{.Titula}}


{{.Naslov}}


{{.Tekst}}



`

// Definirajte podatke koji će se koristiti u predlošku
web := web stranica{
Titula: "Primjer stranice",
Naslov: "Dobro došli na moju web stranicu!",
Tekst: "Ovo je početna stranica moje web stranice.",
}

// Stvorite novi predložak i analizirajte niz predloška
t, err := predložak. Novi("web stranica").Parse (tmpl)
ako pogriješiti != nula {
panika(greška)
}

// Izvršite predložak i zapišite rezultat u stdout
pogreška = t. Izvršiti (os. Stdout, web )
ako pogriješiti != nula {
panika(greška)
}
}

The tmpl varijabla sadrži HTML niz. HTML niz koristi Go templating sintaksu za definiranje naslova stranice, an h1 zaglavlje i odlomak teksta. The web stranica struct definira podatkovna polja za web stranicu s Titula, Naslov, i Tekst polja.

The Raščlanjivati metoda Novi funkcija paketa predložaka stvara i analizira novi predložak s nizom predložaka. The Izvršiti funkcija nove instance predloška izvršava predložak s podacima iz vaše instance strukture i vraća rezultat u standardni izlaz (u ovom slučaju ispisuje rezultat na konzolu).

Izradite web aplikacije uz Go

Učenje o parsiranju i generiranju HTML-a uz Go jedan je korak u pravom smjeru prema izgradnji sofisticiranijih web aplikacija s Go. Možete koristiti okvire kao što su Gin i Echo i usmjerivače kao što su Gorilla Mux i Chi Router za izgradnju poslužiteljske strane vašeg weba primjena.

Ovi paketi su izgrađeni na net/http paket (ugrađeni paket za interakciju s HTTP-om u Go) i apstrahirajte složenost postavljanja poslužitelja i usmjerivača u Go.