Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan bahasa go untuk membangun dan melaksanakan perangkak web

Cara menggunakan bahasa go untuk membangun dan melaksanakan perangkak web

WBOY
WBOYasal
2023-08-04 20:24:211325semak imbas

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

  1. Import pakej berkaitan
    Dalam bahasa Go, kita boleh menggunakan pakej 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"
)
  1. 发送HTTP请求
    通过http.Get()函数发送HTTP请求,并将返回的响应保存在resp变量中。
resp, err := http.Get(url)
if err != nil {
   fmt.Println("发送请求时发生错误:", err)
   return
}
defer resp.Body.Close()
  1. 解析HTML文档
    使用html.Parse()函数来解析HTML文档,并将返回的文档对象保存在doc
  2. doc, err := html.Parse(resp.Body)
    if err != nil {
       fmt.Println("解析HTML文档时发生错误:", err)
       return
    }
      Hantar permintaan HTTP
        Hantar permintaan HTTP melalui fungsi http.Get() dan simpan respons yang dikembalikan dalam resp tengah berubah-ubah.

      1. 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)
        1. Menghuraikan dokumen HTML
        Gunakan fungsi html.Parse() untuk menghuraikan dokumen HTML dan menyimpan objek dokumen yang dikembalikan dalam doc dalam pembolehubah.
        1. 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)
             }
          }

        2. Lintas nod HTML
        Lintas semua nod dalam dokumen HTML secara rekursif dan cari data yang kami perlukan. Di bawah ialah contoh mudah untuk mencari semua pautan dalam dokumen HTML.

        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

        Semasa proses traversal, kita boleh memproses dan menyimpan data yang ditemui. Dalam contoh ini, kami hanya mencetak pautan yang ditemui. Contoh kod lengkap Tunggu langkah. Melalui langkah-langkah ini, kami boleh membangunkan program perangkak web mudah dengan mudah.

        Walaupun artikel ini memberikan contoh mudah, dalam aplikasi sebenar, anda juga mungkin perlu mempertimbangkan isu seperti mengendalikan ubah hala halaman, mengendalikan kuki dan menggunakan ungkapan biasa untuk mengekstrak data yang lebih kompleks. Membangunkan perangkak web memerlukan pengendalian dan pematuhan yang teliti terhadap undang-undang, peraturan dan peraturan tapak web yang berkaitan untuk memastikan data dirangkak secara sah dan patuh.

        Bahan rujukan:
      • [laman web rasmi Go language](https://golang.org/)
      • [Go language standard library document](https://golang.org/pkg/)
      • [Go By Contoh](https://gobyexample.com/)
      🎜

      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!

      Kenyataan:
      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