Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Ayrıştırma, bir belgenin yapısını analiz etmek ve yorumlamaktır. Ayrıştırma işlemi, belgeden belirli öğelerin, niteliklerin veya verilerin çıkarılmasını ve belirli standartlar veya kurallar izlenirken belgenin iyi biçimlendirilmiş olduğunun doğrulanmasını içerebilir. Ayrıştırma, esas olarak web sayfalarından veri çıkarmak veya web sayfalarının yapısını kullanıcılara göstermeden önce değiştirmek için kullanılır.

Go, web sayfalarında yaygın olarak kullanılan HTML ve XML biçimleri de dahil olmak üzere belgelerle çalışmak için paketler sağlar. bu html paketi, HTML'yi tokenize etmek ve ayrıştırmak için işlevler sağlar.

HTML Paketi

bu html package, HTML belgelerini ayrıştırmak ve işlemek, ayrıştırma ağacını geçmek ve ağaç yapısını değiştirmek için HTML5 uyumlu bir belirteç ve ayrıştırıcı sağlar. bu html package, Go'nun standart kitaplığının yerleşik bir paketidir.

instagram viewer

ana özelliklerinden biri, html paket Ayrıştır gibi işlevleri kullanabileceğiniz, HTML belgelerini ayrıştırabilen ve ayrıştırma ağacının kök düğümünü döndürebilen işlev. İlk çocuk Ve SonrakiKardeş ağaçta gezinmek ve belgeden bilgi çıkarmak için. Paket ayrıca şunları sağlar: ParseFragment HTML belgelerinin parçalarını ayrıştırma işlevi.

bu EscapeString işlev, HTML'ye daha güvenli dahil edilmek üzere dizelerdeki özel karakterlerden kaçmak için kullanışlıdır; önlemek için bu işlevi kullanabilirsiniz. siteler arası komut dosyası çalıştırma (XSS) özel karakterleri karşılık gelen HTML varlıklarına dönüştürerek saldırılar.

ile başlamak için html paketi, paketi Go proje dosyalarınıza aktarabilirsiniz.

içe aktarmak"golang.org/x/net/html"

bu html package, HTML oluşturmak için herhangi bir işlev sağlamaz. Bunun yerine, HTML şablonları oluşturmak için bir dizi işlev sunan html/template paketini kullanabilirsiniz. bu html/şablon paket bir işlev sağlar şablon. HTMLEscape HTML'nin çıkışlı sürümlerini bir yanıt yazarına yazmak için.

bu html/şablon package ayrıca standart kitaplığın bir parçasıdır ve paketi şu şekilde içe aktarabilirsiniz.

içe aktarmak"html/şablon"

bu html package, Go ekosisteminde en yaygın kullanılan şablonlama paketidir ve çeşitli işlemleri ve veri türlerini destekler.

Go'da HTML'yi ayrıştırma

bu Ayrıştır işlevi html package, HTML metninin ve belgelerinin ayrıştırılmasına yardımcı olur. bu Ayrıştır işlev bir io. Okuyucu örneğin, dosya belgesini içeren ilk bağımsız değişken ve bir *html. düğüm HTML belgesinin kök düğümü olan örnek

Şu şekilde kullanabilirsiniz: Ayrıştır bir web sayfasını ayrıştırma ve web sayfasındaki tüm URL'leri döndürme işlevi.

içe aktarmak (
"fmt"
"golang.org/x/net/html"
"ağ/http"
)

işlevana() {
// example.com web sayfasına bir HTTP GET isteği gönderin
yanıt, hata := http. Elde etmek(" https://www.example.com")
eğer hata!= sıfır {
fmt. Yazdır("Hata:", hata)
geri dönmek
}
ertelemek karşılık Vücut. Kapalı()

// Yanıt gövdesini istekten ayrıştırmak için html paketini kullanın
doktor, hata := html. Ayrıştır (sırasıyla Vücut)
eğer hata!= sıfır {
fmt. Yazdır("Hata:", hata)
geri dönmek
}


// Web sayfasındaki tüm bağlantıları bulun ve yazdırın
var bağlantılar []sicim
var bağlantı işlev(*html. düğüm)
bağlantı = işlev(n *html. düğüm) {
eğer N. == html yazın. ElementNode && n. veri == "A" {
için _, bir := menzil N. öznitelik {
eğer A. anahtar == "href" {
// öznitelik eşleştiğinde yeni bir bağlantı girişi ekler
bağlantılar = eklemek(bağlantılar, bir. değer)
}
}
}

// web sayfasının HTML'sini ilk alt düğümden çaprazlar
için c := n. İlk çocuk; c != sıfır; c = c. SonrakiKardeş {
bağlantı (ç)
}
}
bağlantı (belge)

// bağlantılar diliminde döngüler
için _, ben := menzil bağlantılar {
fmt. Yazdır("Bağlantı:", ben)
}
}

bu ana işlevi, web sitesine bir HTTP GET isteği gönderir. Elde etmek işlevi http paketler ve sayfa yanıt gövdesini alır. bu Ayrıştır işlevi html package, yanıt gövdesini ayrıştırır ve HTML belgesini döndürür.

bu bağlantılar değişkeni, web sayfasındaki URL'leri tutacak dizelerin dilimidir. bu bağlantı işlev işaretçi referansını alır düğüm için yöntem html paket ve Anahtar düğümden öznitelik örneğinin yöntemi, belirtilen bir öznitelikte bulunan verileri döndürür (bu durumda, href). İşlev, belgeyi SonrakiKardeş gelen yöntem İlk çocuk web sayfasındaki her URL'yi yazdırmak için düğüm. Son olarak, for döngüsü tüm URL'leri yazdırır. bağlantılar dilim.

İşte operasyonun sonucu.

Go'da HTML oluşturma

bu html/şablon package, HTML şablonlarının güvenli ve verimli bir şekilde ayrıştırılması ve yürütülmesi için bir dizi işlev sağlar. Paket, aşağıdakilerle birlikte kullanılmak üzere tasarlanmıştır: html HTML'yi ayrıştırmak ve işlemek için işlevler sağlayan paket.

Sunucu tarafı işleme için HTML oluşturabilirsiniz. html/şablon paket. HTML oluşturmak, e-posta gönderme, sunucu tarafında ön uç oluşturma ve daha pek çok kullanım durumu için kullanışlıdır. Etkileşim kurmak ve web sayfanızın HTML'sini değiştirmek için haritalar ve yapılar gibi yerleşik Go veri türlerini kullanırsınız.

anlaman gerekecek HTML şablonlama söz dizimine git başarıyla HTML oluşturmak için html/şablon paket.

içe aktarmak (
"html/şablon"
"işletim sistemi"
)

tip web sayfası yapı {
Başlık sicim
başlık sicim
Metin sicim
}

işlevana() {
// Şablonu tanımlayın
tmpl := `



{{.Başlık}}


{{.Başlık}}


{{.Metin}}



`

// Şablonda kullanılacak verileri tanımlayın
web := web Sayfası{
Başlık: "Örnek Bir Sayfa",
Başlık: "Web siteme hoş geldiniz!",
Metin: "Bu, web sitemin ana sayfası.",
}

// Yeni bir şablon oluşturun ve şablon dizesini ayrıştırın
t, hata := şablon. Yeni("web sayfası").Ayrıştır (tmpl)
eğer hata!= sıfır {
panik(hata)
}

// Şablonu çalıştır ve sonucu stdout'a yaz
hata = t Yürüt (os. Stdout, web )
eğer hata!= sıfır {
panik(hata)
}
}

bu tmpl değişken HTML dizesini tutar. HTML dizesi, sayfa başlığını tanımlamak için Go şablonlama sözdizimini kullanır. h1 başlık ve bir metin paragrafı. bu web sayfası struct, web sayfası için veri alanlarını tanımlar. Başlık, başlık, Ve Metin alanlar.

bu Ayrıştır yöntemi Yeni şablon paketinin işlevi, şablon dizesiyle yeni bir şablon oluşturur ve ayrıştırır. bu Uygulamak yeni şablon örneğinin işlevi, yapı örneğinizdeki verilerle şablonu yürütür ve sonucu standart çıktıya döndürür (bu durumda, sonucu konsola yazdırır).

Go ile Web Uygulamaları Oluşturun

Go ile HTML'yi ayrıştırmayı ve oluşturmayı öğrenmek, daha karmaşık web uygulamaları oluşturmaya yönelik doğru yönde atılmış bir adımdır. Git ile. Web'inizin sunucu tarafını oluşturmak için Gin ve Echo gibi çerçeveleri ve Gorilla Mux ve Chi Router gibi yönlendiricileri kullanabilirsiniz. başvuru.

Bu paketler, net/http paketi (Go'da HTTP ile etkileşim için yerleşik paket) ve Go'da sunucuları ve yönlendiricileri kurmanın karmaşıklığını soyutlayın.