golang.org/x/net/html
, github.com/PuerkitoBio/goquery
, dsb. Alat ini menyediakan satu set kaedah dan struktur untuk menghuraikan, melintasi dan mengubah suai dokumen HTML.
<p>2.1 Penggunaan golang.org/x/net/html
<p>golang.org/x/net/html
ialah perpustakaan standard yang disediakan oleh bahasa Go, yang menyediakan API yang kaya untuk menghuraikan dokumen HTML. Seterusnya, kami akan menunjukkan cara menggunakan perpustakaan untuk menanyakan data nod dalam dokumen HTML.
<p>Berikut ialah dokumen HTML mudah: <!DOCTYPE html> <html> <head> <title>A Simple HTML Document</title> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> <p>This is another paragraph.</p> </body> </html>
<p>
) dalam dokumen ini. Mula-mula, kita perlu menghuraikan dokumen HTML ke dalam struktur pepohon DOM, dan kemudian menanyakan data nod dengan merentasi pepohon DOM secara rekursif. package main import ( "fmt" "golang.org/x/net/html" "strings" ) var htmlString = ` <!DOCTYPE html> <html> <head> <title>A Simple HTML Document</title> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> <p>This is another paragraph.</p> </body> </html> ` func main() { reader := strings.NewReader(htmlString) doc, err := html.Parse(reader) if err != nil { fmt.Println("Failed to parse HTML string:", err) return } var find func(*html.Node) find = func(n *html.Node) { if n.Type == html.ElementNode && n.Data == "p" { fmt.Println(n.FirstChild.Data) } else { for c := n.FirstChild; c != nil; c = c.NextSibling { find(c) } } } find(doc) }
strings.NewReader()
untuk menukar rentetan kepada io.Taip antara muka Pembaca dan hantar ke fungsi html.Parse()
untuk menghuraikan dokumen HTML. Kemudian, kami mentakrifkan fungsi rekursif bernama find()
yang merentasi pepohon DOM dan mencari nod yang memenuhi kriteria. Apabila nod perenggan ditemui, kami mengeluarkan kandungan teks nod itu. Akhir sekali, kami memanggil fungsi find()
untuk bertanya dan mengeluarkan kandungan teks semua nod perenggan. <p>2.2 Menggunakan github.com/PuerkitoBio/goquery
<p>github.com/PuerkitoBio/goquery
ialah pustaka bahasa Go yang popular yang menyediakan cara yang mudah dan mudah untuk penghuraian dan pertanyaan HTML. Kita boleh menggunakan goquery
untuk melintasi dan menanyakan dokumen HTML tanpa perlu memahami struktur pepohon DOM. <p>Berikut ialah contoh dokumen HTML: <!DOCTYPE html> <html> <head> <title>A Simple HTML Document</title> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> <p>This is another paragraph.</p> </body> </html>
goquery
: package main import ( "fmt" "github.com/PuerkitoBio/goquery" "strings" ) var htmlString = ` <!DOCTYPE html> <html> <head> <title>A Simple HTML Document</title> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> <p>This is another paragraph.</p> </body> </html> ` func main() { reader := strings.NewReader(htmlString) doc, err := goquery.NewDocumentFromReader(reader) if err != nil { fmt.Println("Failed to parse HTML string:", err) return } doc.Find("p").Each(func(i int, s *goquery.Selection) { fmt.Println(s.Text()) }) }
strings.NewReader()
untuk menukar rentetan kepada io.Jenis antara muka Pembaca dan hantar ke fungsi goquery.NewDocumentFromReader()
untuk menghuraikan dokumen HTML. Kemudian, kami menggunakan doc.Find("p")
untuk menanyakan semua nod perenggan dan mengeluarkan kandungan teksnya melalui kaedah s.Text()
.
<p>3. Ringkasan
<p>Artikel ini memperkenalkan cara untuk menanyakan kandungan dokumen HTML dalam bahasa Go. Kami meneroka dua pendekatan berbeza, menggunakan golang.org/x/net/html
dan github.com/PuerkitoBio/goquery
. Alat ini bukan sahaja dapat menghuraikan dokumen HTML, tetapi juga menyediakan API yang kaya untuk melintasi dan memanipulasi pepohon DOM. Tidak kira kaedah yang anda pilih, anda boleh mendapatkan data dengan mudah daripada dokumen HTML, membantu anda membina aplikasi yang lebih elegan dan cekap. Atas ialah kandungan terperinci html pertanyaan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!