Bagaimana untuk membuang html dalam golang

PHPz
Lepaskan: 2023-04-27 14:46:14
asal
1059 orang telah melayarinya

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)
}
Salin selepas log masuk

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!
Salin selepas log masuk
Salin selepas log masuk

Kod di atas mudah untuk dilaksanakan, tetapi terdapat beberapa masalah:

  1. Jika HTML tag mengandungi atribut, seperti Google, kita perlu menambah aksara kosong antara kurungan sudut kiri dan kanan, jika tidak, teks pautan "Google" dalam rentetan yang diganti akan rapat dengan kurungan sudut kiri dan kanan , menjadikan keputusan sukar dibaca.
  2. Jika teg HTML mengandungi terlalu banyak kandungan, seperti JavaScript, CSS, dll., kelajuan penggantian akan menjadi lebih perlahan.

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))
}
Salin selepas log masuk

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!
Salin selepas log masuk
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!