Bagaimana untuk melaksanakan perangkak web menggunakan Golang

WBOY
Lepaskan: 2023-06-24 09:17:05
asal
896 orang telah melayarinya

Perangkak web, juga dikenali sebagai perangkak web dan labah-labah web, ialah program automatik yang digunakan untuk merangkak maklumat di Internet. Perangkak web boleh digunakan untuk mendapatkan sejumlah besar data, menganalisis dan memproses data. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaksanakan perangkak web.

1. Pengenalan kepada Golang
Golang, juga dikenali sebagai bahasa Go, telah dibangunkan oleh Google dan dikeluarkan pada tahun 2009. Golang ialah bahasa yang ditaip secara statik, disusun dengan ciri seperti kecekapan, kebolehpercayaan, keselamatan, kesederhanaan dan keselarasan. Oleh kerana kecekapan dan kesederhanaan Golang, semakin ramai orang mula menggunakan Golang untuk melaksanakan perangkak web.

2. Langkah-langkah pelaksanaan

  1. Memasang Golang
    Mula-mula anda perlu memasang Golang pada komputer tempatan anda. Golang boleh dimuat turun dan dipasang melalui laman web rasmi Golang (https://golang.org/).
  2. Import pakej pergantungan
    Apabila menggunakan Golang untuk melaksanakan perangkak web, anda perlu menggunakan beberapa pakej pihak ketiga, seperti "net/http", "io/ioutil", "regexp" dan lain-lain pakej. Pakej ini boleh dipasang menggunakan arahan go get:
    go get -u github.com/PuekitoBio/goquery
    go get -u golang.org/x/net/html
    go get -u golang. org /x/text/encoding/unicode
    go get -u golang.org/x/text/transform

Antaranya, pakej "goquery" digunakan untuk menghuraikan dokumen HTML dan pakej "html" digunakan Untuk penghurai dokumen HTML yang diberikan, pakej "unicode" digunakan untuk menghuraikan pengekodan, dan pakej "transform" digunakan untuk menukar pengekodan.

  1. Tentukan tapak web sasaran dan maklumat yang perlu dirangkak
    Sebelum melaksanakan perangkak web, anda perlu menentukan tapak web sasaran dan maklumat yang perlu dirangkak. Mengambil Douban Movies sebagai contoh, maklumat yang kami perlukan untuk merangkak termasuk nama filem, penilaian dan ulasan.
  2. Menghuraikan dokumen HTML
    Gunakan pakej GoQuery untuk menghuraikan dokumen HTML, gunakan kaedah http GET untuk mendapatkan dokumen HTML daripada tapak web sasaran dan gunakan pakej GoQuery untuk menghuraikan maklumat dalam HTML dokumen. Berikut ialah kod untuk menghuraikan dokumen HTML:

resp, err := http.Get(url)
if err != nil {
log.Fatal(err)
}
tunda resp.Body.Close()
doc, err := goquery.NewDocumentFromReader(resp.Body)

  1. Ekstrak maklumat daripada Ekstrak maklumat yang diperlukan daripada dokumen HTML. Berikut ialah kod untuk mengekstrak maklumat:
doc.Find(".hd").Each(func(i int, s *goquery.Selection) {

title := s. Find( "span.title").Teks()
rating := s.Find("span.rating_num").Text()
komen := s.Find("span.inq").Teks ()
})

    Menyimpan maklumat
  1. Simpan maklumat yang diekstrak dalam fail data atau pangkalan data. Berikut ialah kod untuk menyimpan maklumat ke dalam fail CSV:
f, err := os.Create("movies.csv")

if err != nil {
log . Fatal(err)
}
tunda f.Close()
w := csv.NewWriter(f)
w.Write([]rentetan{"title", "rating", " ulasan "})
untuk i := 0; i < len(tajuk); i++ {
rekod := []rentetan{tajuk[i], penilaian[i], ulasan[i]}
w.Tulis(rakam)
}
w.Flush()

    Kod penuh
import (

"pengekodan/csv"
"github.com/PuerkitoBio/goquery"
"log"
"net/http"
"os"
"regexp"
)
func Crawl(rentetan url) {
resp, err := http.Get(url)
if err != nil {

  log.Fatal(err)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

tangguhkan resp.Body.Close()
doc, err : = goquery.NewDocumentFromReader(resp.Body)
if err != nil {

  log.Fatal(err)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

tajuk := []rentetan{}

ratings := []string{ }
ulasan := []rentetan{}
semula := regexp.MustCompile(
)s+ doc.Find(".hd").Each(func(i int, s *goquery. Pemilihan ) {

  title := s.Find("span.title").Text()
  title = re.ReplaceAllString(title, "")
  rating := s.Find("span.rating_num").Text()
  comment := s.Find("span.inq").Text()
  titles = append(titles, title)
  ratings = append(ratings, rating)
  comments = append(comments, comment)
Salin selepas log masuk

})

f, err := os.Create("movies.csv")
if err != nil {

  log.Fatal(err)
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

}

tangguhkan f.Close()
w := csv.NewWriter(f)
w.Write([]rentetan{"title", "rating", "comment"})
for i := 0 ; i < len(titles); i++ {

  record := []string{titles[i], ratings[i], comments[i]}
  w.Write(record)
Salin selepas log masuk

}

w.Flush()
}

    Kesimpulan
  1. Apa yang anda perlu tahu gunakan Golang untuk melaksanakan perangkak web Pengetahuan pengaturcaraan tertentu, termasuk penghuraian dokumen HTML, penggunaan ungkapan biasa dan operasi fail. Dengan melaksanakan perangkak web melalui langkah-langkah yang diperkenalkan dalam artikel ini, anda boleh mendapatkan maklumat pada tapak web sasaran dan menyimpan maklumat tersebut pada komputer setempat anda.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan perangkak web menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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!