Go กับการทำ Web Scraping และ Crawling

Sharing is caring!

การเก็บข้อมูลจากเว็บไซต์แบบอัตโนมัติ หรือที่เรียกว่า Web Scraping และ Web Crawling นั้นมีความสำคัญอย่างมากในยุคข้อมูล โดยเฉพาะในงานอย่างการเก็บข้อมูลราคา สินค้า ข่าว หรือข้อมูลเชิงสถิติอื่น ๆ ซึ่งภาษา Go ก็มีเครื่องมือให้ใช้งานง่าย สะดวก และมีประสิทธิภาพสูง

📌 Web Scraping vs Web Crawling

  • Scraping: คือการดึงข้อมูลจากหน้าเว็บ เช่น ราคาสินค้า ข่าว หรือเนื้อหาบทความ
  • Crawling: คือการไล่ลิงก์หรือเดินทางไปตามหน้าเว็บไซต์ เพื่อค้นหาหรือเก็บข้อมูลต่อเนื่อง

🧰 Library ที่นิยมใน Go

  • net/http สำหรับทำ HTTP request
  • golang.org/x/net/html สำหรับ parse HTML
  • github.com/PuerkitoBio/goquery คล้าย jQuery syntax
  • github.com/gocolly/colly สำหรับงาน crawling/scraping แบบ professional

🔎 วิธีที่ 1: ใช้ goquery

go get github.com/PuerkitoBio/goquery
  
package main

import (
  "fmt"
  "log"
  "net/http"

  "github.com/PuerkitoBio/goquery"
)

func main() {
  res, err := http.Get("https://example.com")
  if err != nil {
    log.Fatal(err)
  }
  defer res.Body.Close()

  doc, err := goquery.NewDocumentFromReader(res.Body)
  if err != nil {
    log.Fatal(err)
  }

  doc.Find("a").Each(func(i int, s *goquery.Selection) {
    href, _ := s.Attr("href")
    fmt.Println(href)
  })
}
  

🚀 วิธีที่ 2: ใช้ Colly (แนะนำ)

go get github.com/gocolly/colly/v2
  
package main

import (
  "fmt"
  "github.com/gocolly/colly/v2"
)

func main() {
  c := colly.NewCollector()

  c.OnHTML("a[href]", func(e *colly.HTMLElement) {
    link := e.Attr("href")
    fmt.Println("🔗", link)
  })

  c.OnRequest(func(r *colly.Request) {
    fmt.Println("🌐 Visiting:", r.URL.String())
  })

  c.Visit("https://example.com")
}
  

📂 คำสั่ง CSS Selector ที่ใช้บ่อย

  • h1, p, a[href], img[src]
  • div.content, ul > li, .class-name

💡 เทคนิคเสริม

  • อ่านและเคารพ robots.txt
  • ตั้ง User-Agent ที่เหมาะสม
  • ใช้ Rate Limiting เพื่อป้องกันโดนแบน
  • ใช้ Proxy หรือ Rotate IP ถ้า scrape จำนวนมาก

📦 Use Cases

  • เก็บข้อมูลราคาสินค้าเพื่อเปรียบเทียบ
  • วิเคราะห์หัวข้อข่าวจากหลายเว็บ
  • ดึงข้อมูลประกาศงาน หรือโปรเจกต์ฟรีแลนซ์
  • ติดตามอัตราแลกเปลี่ยน หรือราคาน้ำมัน
  • สร้าง dataset สำหรับ Machine Learning

⚖️ ด้านกฎหมาย

  • ตรวจสอบว่าเว็บไซต์อนุญาตให้ scrape หรือไม่
  • ข้อมูลมีลิขสิทธิ์หรือเป็นข้อมูลสาธารณะ
  • หาก scrape ข้อมูลจากหลายเว็บ ควรใช้ caching

📚 สรุป

ภาษา Go มีเครื่องมือที่ครบครันในการทำ Web Scraping และ Crawling ไม่ว่าจะใช้วิธีพื้นฐานอย่าง net/http ร่วมกับ goquery หรือจะใช้ library ที่ทรงพลังอย่าง colly ก็สามารถสร้างระบบเก็บข้อมูลแบบอัตโนมัติที่เร็วและปลอดภัยได้

🔗 แหล่งอ้างอิง


📈 ข้อความสำหรับ SEO

Go Web Scraping ภาษาไทย | Go colly web crawler | เขียน crawler ด้วย Golang | Golang Web Scraper | goquery colly go ภาษาไทย

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *