การเก็บข้อมูลจากเว็บไซต์แบบอัตโนมัติ หรือที่เรียกว่า 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 ภาษาไทย