Parsing menganalisis dan menafsirkan struktur dokumen. Proses parsing mungkin termasuk mengekstraksi elemen, atribut, atau data tertentu dari dokumen dan memverifikasi bahwa dokumen tersebut diformat dengan baik sambil mengikuti standar atau aturan tertentu. Parsing terutama digunakan untuk mengekstraksi data dari halaman web atau memanipulasi struktur halaman web sebelum menampilkannya kepada pengguna.
Go menyediakan paket untuk bekerja dengan dokumen, termasuk format HTML dan XML yang populer digunakan di halaman web. Itu html package menyediakan fungsi untuk tokenizing dan parsing HTML.
Paket HTML
Itu html package menyediakan tokenizer dan parser yang sesuai dengan HTML5 untuk mem-parsing dan memanipulasi dokumen HTML, melintasi pohon parse, dan memanipulasi struktur pohon. Itu html package adalah paket built-in dari pustaka standar Go.
Salah satu fitur utama dari html paket adalah Mengurai fungsi yang dapat mengurai dokumen HTML dan mengembalikan simpul akar pohon parse, dari mana Anda dapat menggunakan fungsi seperti Anak pertama Dan SelanjutnyaSaudara untuk menavigasi pohon dan mengekstrak informasi dari dokumen. Paket ini juga menyediakan ParseFragmen fungsi untuk mem-parsing fragmen dokumen HTML.
Itu EscapeString fungsi berguna untuk keluar dari karakter khusus dalam string untuk penyertaan yang lebih aman dalam HTML; Anda dapat menggunakan fungsi ini untuk mencegah skrip lintas situs (XSS) serangan dengan mengonversi karakter khusus ke entitas HTML yang sesuai.
Untuk memulai dengan html paket, Anda dapat mengimpor paket ke file proyek Go Anda.
impor"golang.org/x/net/html"
Itu html package tidak menyediakan fungsi apa pun untuk menghasilkan HTML. Sebagai gantinya, Anda dapat menggunakan paket html/template, yang menawarkan sekumpulan fungsi untuk membuat template HTML. Itu html/template paket menyediakan fungsi templat. HTMLEscape untuk menulis versi lolos dari HTML ke penulis respons.
Itu html/template paket juga merupakan bagian dari perpustakaan standar, dan inilah cara Anda dapat mengimpor paket.
impor"html/template"
Itu html package adalah paket template yang paling populer digunakan di ekosistem Go dan mendukung berbagai operasi dan tipe data.
Parsing HTML di Go
Itu Mengurai fungsi dari html package membantu mem-parsing teks dan dokumen HTML. Itu Mengurai fungsi mengambil dalam sebuah io. Pembaca Misalnya karena ini adalah argumen pertama yang berisi dokumen file dan *html. Node contoh, yang merupakan simpul akar dari dokumen HTML
Inilah cara Anda dapat menggunakan Mengurai berfungsi untuk mengurai halaman web dan mengembalikan semua URL di halaman web.
impor (
"fmt"
"golang.org/x/net/html"
"net/http"
)fungsiutama() {
// Kirim permintaan HTTP GET ke halaman web example.com
resp, err := http. Mendapatkan(" https://www.example.com")
jika salah!= nol {
fmt. Cetak("Kesalahan:", salah)
kembali
}
menunda resp. Tubuh. Menutup()// Gunakan paket html untuk mem-parsing isi respons dari permintaan
dok, err := html. Mengurai (resp. Tubuh)
jika salah!= nol {
fmt. Cetak("Kesalahan:", salah)
kembali
}
// Temukan dan cetak semua tautan di halaman web
var link []rangkaian
var tautan fungsi(*html. Node)
tautan = fungsi(n *html. Node) {
jika N. Ketik == html. ElementNode && n. Data == "A" {
untuk _, sebuah := jangkauan N. Atr {
jika A. Kunci == "href" {
// menambahkan entri tautan baru saat atribut cocok
tautan = menambahkan(tautan, a. Val)
}
}
}// melintasi HTML laman web dari simpul anak pertama
untuk c := n. Anak pertama; c != nol; c = c. BerikutnyaSaudara {
tautan (c)
}
}
tautan (dok)
// loop melalui irisan tautan
untuk _, l := jangkauan tautan {
fmt. Cetak("Tautan:", l)
}
}
Itu utama fungsi mengirimkan permintaan HTTP GET ke situs web dengan Mendapatkan fungsi dari http paket dan mengambil isi respons halaman. Itu Mengurai fungsi dari html paket mem-parsing badan respons dan mengembalikan dokumen HTML.
Itu link variabel adalah potongan string yang akan menyimpan URL dari halaman web. Itu tautan fungsi mengambil referensi pointer ke Node metode untuk html paket, dan Kunci metode instance atribut dari node mengembalikan data yang terkandung dalam atribut tertentu (dalam hal ini, href). Fungsi melintasi dokumen dengan SelanjutnyaSaudara metode dari Anak pertama node untuk mencetak setiap URL di halaman web. Akhirnya, for loop mencetak semua URL dari link mengiris.
Berikut hasil operasinya.
Membuat HTML di Go
Itu html/template package menyediakan serangkaian fungsi untuk parsing dan eksekusi template HTML yang aman dan efisien. Paket ini dirancang untuk digunakan bersama dengan html paket, yang menyediakan fungsi untuk mem-parsing dan memanipulasi HTML.
Anda dapat menghasilkan HTML untuk rendering sisi server dengan html/template kemasan. Menghasilkan HTML berguna untuk banyak kasus penggunaan seperti mengirim email, rendering frontend sisi server, dan banyak lagi. Anda bisa menggunakan tipe data Go bawaan seperti peta dan struct untuk berinteraksi dan memanipulasi HTML halaman web Anda.
Anda harus mengerti Pergi sintaks template HTML untuk berhasil menghasilkan HTML dengan html/template kemasan.
impor (
"html/template"
"os"
)jenis halaman web struct {
Judul rangkaian
Menuju rangkaian
Teks rangkaian
}fungsiutama() {
// Tentukan templatnya
tmpl := `{{.Judul}} {{.Menuju}}
{{.Teks}}
`// Tentukan data yang akan digunakan dalam template
web := halaman web{
Judul: "Halaman Contoh",
Menuju: "Selamat datang di situs web saya!",
Teks: "Ini adalah beranda situs web saya.",
}// Buat template baru dan parsing string template
t, err := templat. Baru("halaman web").Parse (tmpl)
jika salah!= nol {
panik(berbuat salah)
}
// Jalankan template dan tulis hasilnya ke stdout
salah = t. Jalankan (mis. stdout, web )
jika salah!= nol {
panik(berbuat salah)
}
}
Itu tmpl variabel memegang string HTML. String HTML menggunakan sintaks template Go untuk menentukan judul halaman, dan h1 header, dan paragraf teks. Itu halaman web struct mendefinisikan bidang data untuk halaman web dengan Judul, Menuju, Dan Teks bidang.
Itu Mengurai metode dari Baru fungsi paket template membuat dan mem-parsing template baru dengan string template. Itu Menjalankan fungsi instance template baru mengeksekusi template dengan data dari instance struct Anda dan mengembalikan hasilnya ke output standar (dalam hal ini, ia mencetak hasilnya ke konsol).
Bangun Aplikasi Web Dengan Go
Mempelajari parsing dan membuat HTML dengan Go adalah satu langkah ke arah yang benar untuk membangun aplikasi web yang lebih canggih dengan Pergi. Anda dapat menggunakan framework seperti Gin dan Echo dan router seperti Gorilla Mux dan Chi Router untuk membangun sisi server web Anda aplikasi.
Paket-paket ini dibangun di atas net/http package (paket bawaan untuk berinteraksi dengan HTTP di Go) dan mengabstraksi kompleksitas pengaturan server dan router di Go.