Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara merangkak golang

Cara merangkak golang

王林
王林asal
2023-05-21 19:05:05711semak imbas

Golang ialah bahasa pengaturcaraan bahagian belakang yang sangat popular yang boleh digunakan untuk menyelesaikan banyak tugas, salah satunya ialah merangkak. Artikel ini akan memperkenalkan cara menggunakan Golang untuk menulis program perangkak mudah.

  1. Persediaan

Sebelum mula menulis perangkak, kita perlu memasang rangka kerja perangkak web Golang yang dipanggil GoScrape. Sebelum digunakan, kita perlu memasang GoScrape terlebih dahulu:

go get github.com/yhat/scrape
  1. Melaksanakan perangkak

Sebelum melaksanakan perangkak, kita perlu menentukan matlamat perangkak. Dalam contoh ini, kami akan menggunakan Golang untuk merangkak soalan yang berkaitan dengan "Golang" di Zhihu.

Pertama, kita perlu menentukan fungsi untuk menghantar permintaan ke pelayan Zhihu dan mendapatkan kandungan halaman. Kod berikut melaksanakan fungsi mudah untuk mendapatkan kandungan halaman:

func getPageContent(url string) ([]byte, error) {
    res, err := http.Get(url)
    if err != nil {
        return nil, err
    }
    defer res.Body.Close()

    body, err := ioutil.ReadAll(res.Body)
    if err != nil {
        return nil, err
    }

    return body, nil
}

Fungsi ini menggunakan perpustakaan standard Go "net/http" dan "io/ioutil" untuk melaksanakan permintaan dan membaca respons. Selepas pemprosesan selesai, ia mengembalikan kandungan respons dan objek ralat supaya kami boleh mendapatkan bantuan semasa mengendalikan ralat.

Seterusnya, kita perlu memproses kandungan halaman yang dirangkak. Dalam contoh ini, kami akan menggunakan GoScrape untuk menghuraikan HTML dan mengekstrak maklumat yang kami perlukan. Berikut ialah fungsi untuk menghuraikan kandungan halaman:

func extractData(content []byte) {
    root, err := html.Parse(bytes.NewReader(content))
    if err != nil {
        panic(err)
    }

    matcher := func(n *html.Node) bool {
        if n.Type == html.ElementNode && n.Data == "a" {
            for _, attr := range n.Attr {
                if attr.Key == "class" && attr.Val == "question_link" {
                    return true
                }
            }
        }
        return false
    }

    questions := scrape.FindAll(root, matcher)

    for _, q := range questions {
        fmt.Println(scrape.Text(q))
    }
}

Fungsi ini menggunakan "golang.org/x/net/html" untuk menghuraikan HTML dan menggunakan GoScrape untuk mencari elemen HTML dalam halaman yang berkaitan dengan soalan yang kita perlukan. Dalam contoh ini, kami akan menggunakan teg "a" dan nama kelas "question_link" sebagai pemadan. Jika digunakan dengan betul, pemadan ini akan mengembalikan elemen HTML yang mengandungi semua sambungan yang bermasalah. Akhirnya kami akan mengekstraknya menggunakan ciri pengekstrakan teks GoScrape. Akhirnya keluarkan tajuk masalah kepada konsol.

Akhir sekali, kami menggabungkan kedua-dua fungsi ini supaya ia dapat dilaksanakan secara berterusan. Kod berikut menunjukkan cara menggunakan fungsi ini untuk merangkak Zhihu:

func main() {
    url := "https://www.zhihu.com/search?type=content&q=golang"

    content, err := getPageContent(url)
    if err != nil {
        panic(err)
    }

    extractData(content)
}

Di sini kami mentakrifkan fungsi "utama" untuk menyepadukan dua fungsi yang dinyatakan sebelum ini. Mula-mula, kami memanggil fungsi "getPageContent" untuk mendapatkan halaman hasil carian Zhihu. Jika sebarang ralat berlaku, kami akan keluar dari program, jika tidak, kami akan menghantar hasil pulangan kepada fungsi "extractData", yang akan menghuraikan kandungan halaman dan mengekstrak tajuk soalan, dan akhirnya mengeluarkannya ke konsol.

  1. Ringkasan

Artikel ini memperkenalkan cara menggunakan Golang untuk menulis program perangkak mudah. Kami mempelajari cara menggunakan GoScrape dan perpustakaan standard untuk mengambil dan memproses kandungan HTML dengan penjelasan langkah demi langkah. Dalam amalan, konsep ini boleh dipanjangkan dan dioptimumkan untuk mencapai gelagat perangkak yang lebih kompleks.

Atas ialah kandungan terperinci Cara merangkak golang. 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
Artikel sebelumnya:Cara berhijrah golangArtikel seterusnya:Cara berhijrah golang