Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk membuang html dalam golang
Pergi amalan bahasa: Bagaimana untuk mengalih keluar teg HTML?
Dalam pembangunan web, kami selalunya perlu mengalih keluar teg HTML untuk mendapatkan kandungan teks biasa, seperti analisis dan pemprosesan ulasan, artikel, dsb. Untuk keperluan ini, bahasa Go menyediakan pelbagai kaedah, dan artikel ini akan memperkenalkan anda kepada beberapa kaedah tersebut.
Kaedah 1: Gunakan penggantian rentetan
Bahasa Go menyediakan pakej rentetan untuk mengendalikan rentetan. Kita boleh menggunakan kaedah strings.ReplaceAll() untuk menggantikan teg HTML dengan aksara ruang putih untuk mendapatkan kandungan teks biasa. Kod pelaksanaan khusus adalah seperti berikut:
package main import ( "fmt" "strings" ) func main() { html := "<html><head><title>Test Page</title></head><body><p>Hello, Go!</p></body></html>" // 使用 strings.ReplaceAll() 将 HTML 标签替换为空白字符 text := strings.ReplaceAll(html, "<", " <") text = strings.ReplaceAll(text, ">", "> ") text = strings.TrimSpace(strings.Join(strings.Fields(text), " ")) fmt.Println(text) }
Dalam kod di atas, kami mula-mula menggunakan kaedah rentetan.ReplaceAll() untuk menggantikan semua kurungan sudut kiri ("<") dengan ruang + kurungan sudut kiri, dan gantikan semua kurungan sudut kanan ( ">") digantikan dengan bentuk kurungan sudut tegak + ruang, iaitu, ruang ditambah antara label dan teks untuk memudahkan penggunaan rentetan berikutnya. Kaedah Medan() untuk dipecahkan rentetan itu menjadi berbilang subrentetan. Seterusnya, kami menggunakan kaedah strings.Fields() untuk membahagikan rentetan kepada berbilang subrentetan, kemudian gunakan strings.Join() untuk menyambungkan subrentetan ini dengan aksara ruang putih dan akhirnya menggunakan kaedah strings.TrimSpace() untuk mengalih keluar rentetan pada kedua-dua berakhir. Aksara ruang putih untuk mendapatkan kandungan teks biasa terakhir.
Jalankan kod di atas, output adalah seperti berikut:
Test Page Hello, Go!
Kod di atas mudah untuk dilaksanakan, tetapi terdapat beberapa masalah:
Memandangkan isu ini, kita boleh menggunakan kaedah kedua.
Kaedah 2: Gunakan perpustakaan Goquery
Goquery ialah perpustakaan penghuraian dan manipulasi HTML dalam bahasa Go, menyediakan API yang mudah dan fleksibel. Kita boleh menggunakan pustaka Goquery untuk menghuraikan HTML dan menapis nod teks untuk mendapatkan kandungan teks biasa. Kod pelaksanaan khusus adalah seperti berikut:
package main import ( "fmt" "strings" "github.com/PuerkitoBio/goquery" ) func main() { html := "<html><head><title>Test Page</title></head><body><p>Hello, Go!</p></body></html>" doc, _ := goquery.NewDocumentFromReader(strings.NewReader(html)) // 筛选文本节点 var text string doc.Find(":not(script):not(style)").Each(func(_ int, sel *goquery.Selection) { if sel.Children().Length() == 0 { text += sel.Text() + " " } }) fmt.Println(strings.TrimSpace(text)) }
Dalam kod di atas, kami menggunakan kaedah goquery.NewDocumentFromReader() untuk menukar HTML kepada objek goquery.Document. Seterusnya, kami menggunakan kaedah doc.Find() untuk memilih semua nod kecuali skrip dan teg gaya, dan menggunakan kaedah sel.Children().Length() untuk menentukan sama ada nod semasa ialah nod teks. Jika ya, tambahkannya kandungan kepada pembolehubah teks. Akhir sekali, gunakan kaedah strings.TrimSpace() untuk mengalih keluar aksara kosong pada kedua-dua hujung rentetan untuk mendapatkan kandungan teks biasa terakhir.
Jalankan kod di atas, output adalah seperti berikut:
Test Page Hello, Go!
Menggunakan pustaka Goquery boleh mengendalikan pelbagai format teg, dan kod lebih mudah dibaca dan diselenggara.
Artikel ini memperkenalkan dua kaedah untuk mengalih keluar teg HTML, yang mana ungkapan biasa juga biasa digunakan. Dalam aplikasi praktikal, kita boleh memilih kaedah yang paling sesuai untuk situasi tertentu.
Atas ialah kandungan terperinci Bagaimana untuk membuang html dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!