Cara menggunakan bahasa Go untuk membangunkan dan melaksanakan perangkak web
Pengenalan:
Perangkak web ialah program yang mengekstrak data secara automatik (seperti teks, imej, video, dsb.) Ia menyemak imbas dan mengumpul maklumat secara automatik di Internet. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk membangunkan dan melaksanakan perangkak web serta melampirkan contoh kod yang sepadan.
1. Pengenalan kepada bahasa Go
Bahasa Go ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google dan pertama kali dikeluarkan pada tahun 2009. Berbanding dengan bahasa pengaturcaraan lain, bahasa Go mempunyai ciri konkurensi yang kuat dan kelajuan pelaksanaan yang cekap, menjadikannya sangat sesuai untuk menulis perangkak web.
2. Langkah pelaksanaan perangkak web
net/http
untuk membuat permintaan HTTP dan pakej html
untuk menghuraikan dokumen HTML. Pertama, kita perlu mengimport kedua-dua pakej ini. net/http
包来进行HTTP请求,使用html
包来解析HTML文档。首先,我们需要导入这两个包。import ( "fmt" "net/http" "golang.org/x/net/html" )
http.Get()
函数发送HTTP请求,并将返回的响应保存在resp
变量中。resp, err := http.Get(url) if err != nil { fmt.Println("发送请求时发生错误:", err) return } defer resp.Body.Close()
html.Parse()
函数来解析HTML文档,并将返回的文档对象保存在doc
doc, err := html.Parse(resp.Body) if err != nil { fmt.Println("解析HTML文档时发生错误:", err) return }
http.Get()
dan simpan respons yang dikembalikan dalam resp</code > tengah berubah-ubah. <li><br><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>func findLinks(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "a" {
for _, attr := range n.Attr {
if attr.Key == "href" {
fmt.Println(attr.Val)
}
}
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
findLinks(c)
}
}
findLinks(doc)</pre><div class="contentsignin">Salin selepas log masuk</div></div><ol start="3"></li>Menghuraikan dokumen HTML</ol>Gunakan fungsi <code>html.Parse()
untuk menghuraikan dokumen HTML dan menyimpan objek dokumen yang dikembalikan dalam doc
dalam pembolehubah. func findLinks(n *html.Node) { if n.Type == html.ElementNode && n.Data == "a" { for _, attr := range n.Attr { if attr.Key == "href" { fmt.Println(attr.Val) } } } for c := n.FirstChild; c != nil; c = c.NextSibling { findLinks(c) } }
package main import ( "fmt" "net/http" "golang.org/x/net/html" ) func findLinks(n *html.Node) { if n.Type == html.ElementNode && n.Data == "a" { for _, attr := range n.Attr { if attr.Key == "href" { fmt.Println(attr.Val) } } } for c := n.FirstChild; c != nil; c = c.NextSibling { findLinks(c) } } func main() { url := "https://www.example.com" resp, err := http.Get(url) if err != nil { fmt.Println("发送请求时发生错误:", err) return } defer resp.Body.Close() doc, err := html.Parse(resp.Body) if err != nil { fmt.Println("解析HTML文档时发生错误:", err) return } findLinks(doc) }
Hasil keluaran
Atas ialah kandungan terperinci Cara menggunakan bahasa go untuk membangun dan melaksanakan perangkak web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!