การเก็บข้อมูลจากเว็บไซต์แบบอัตโนมัติ หรือที่เรียกว่า Web Scraping และ Web Crawling นั้นมีความสำคัญอย่างมากในยุคข้อมูล โดยเฉพาะในงานอย่างการเก็บข้อมูลราคา สินค้า ข่าว หรือข้อมูลเชิงสถิติอื่น ๆ ซึ่งภาษา Go ก็มีเครื่องมือให้ใช้งานง่าย สะดวก และมีประสิทธิภาพสูง
📌 Web Scraping vs Web Crawling
- Scraping: คือการดึงข้อมูลจากหน้าเว็บ เช่น ราคาสินค้า ข่าว หรือเนื้อหาบทความ
 - Crawling: คือการไล่ลิงก์หรือเดินทางไปตามหน้าเว็บไซต์ เพื่อค้นหาหรือเก็บข้อมูลต่อเนื่อง
 
🧰 Library ที่นิยมใน Go
net/httpสำหรับทำ HTTP requestgolang.org/x/net/htmlสำหรับ parse HTMLgithub.com/PuerkitoBio/goqueryคล้าย jQuery syntaxgithub.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 ภาษาไทย