ติดตามราคาซูเปอร์มาร์เก็ต
- ในเดือนธันวาคม 2022 ได้สร้างเว็บไซต์เพื่อติดตามการเปลี่ยนแปลงราคาของซูเปอร์มาร์เก็ตรายใหญ่ 3 แห่งในกรีซ
- ระหว่างกระบวนการนี้ต้องแก้ปัญหาหลายอย่าง และได้บทเรียนมากมาย
การสแครปเว็บไซต์ที่เป็น js
- ปัญหาหลักคือเว็บไซต์ที่เรนเดอร์ด้วย JavaScript
- ใช้ Playwright เพื่อควบคุมเว็บเบราว์เซอร์แบบโปรแกรมmatically
- Playwright รองรับเบราว์เซอร์ Chromium, Safari, Firefox และใช้งานร่วมกับ Node, Java, .NET, Python ได้
- เขียนโค้ดเพื่อจัดการ infinite scroll และดึงข้อมูลสินค้า
ระบบอัตโนมัติ
- บน M1 MacBook Pro การสแครปซูเปอร์มาร์เก็ตทั้งหมดใช้เวลาตั้งแต่ 50 นาทีถึง 2 ชั่วโมง 30 นาที
- แม้จะดีสำหรับการพัฒนาและทดสอบ แต่ก็ต้องการโซลูชันที่ถาวรกว่านี้
ใช้โน้ตบุ๊กเก่า?
- ลองใช้โน้ตบุ๊กเก่าจากปี 2013 แต่ประสิทธิภาพน่าผิดหวังมาก
ใช้คลาวด์?
- AWS แพงเกินไป ส่วน Hetzner ถูกกว่ามาก
- จึงตัดสินใจใช้เซิร์ฟเวอร์ของ Hetzner
ใช้ทั้งโน้ตบุ๊กเก่าและคลาวด์!
- ทำระบบอัตโนมัติสำหรับการสแครปบนเซิร์ฟเวอร์คลาวด์ และใช้โน้ตบุ๊กเก่าเป็นเซิร์ฟเวอร์ CI
- ตั้งค่า pipeline ด้วย Concourse และรันงานสแครปทุกวัน
หลีกเลี่ยงการจำกัด IP
- คำขอจาก IP ที่ไม่ใช่ที่อยู่อาศัยถูกบล็อกเพราะกฎไฟร์วอลล์ของ Akamai
- ใช้ Tailscale เพื่อทำให้คำขอดูเหมือนมาจาก IP ที่บ้าน
สาเหตุและช่วงเวลาที่ล้มเหลว
- โปรเจกต์สแครปได้รับผลกระทบจากนักพัฒนาเว็บไซต์
- ความล้มเหลวมี 2 ประเภท: breaking change และ non-breaking change
- การได้รับฟีดแบ็กอย่างรวดเร็วเป็นสิ่งสำคัญ
การปรับแต่ง
- ทำการปรับแต่งหลายอย่าง เช่น การแจ้งเตือนทางอีเมล, hysteresis, timeout และการตั้งค่า retry
- ปรับปรุงประสิทธิภาพด้วยการใช้เซิร์ฟเวอร์ที่ใหญ่ขึ้นและลดการดึงข้อมูล
ค่าใช้จ่าย
- ค่าใช้เซิร์ฟเวอร์บน Hetzner ถูกมาก
- ลดต้นทุนการเก็บข้อมูลด้วย free tier ของ R2 จาก Cloudflare
บทสรุป
- อธิบายองค์ประกอบหลักของการสร้าง pipeline สำหรับสแครปเพื่อติดตามการเปลี่ยนแปลงราคาซูเปอร์มาร์เก็ต
สรุปของ GN⁺
- บทความนี้แบ่งปันประสบการณ์การใช้ Playwright และบริการคลาวด์เพื่อติดตามการเปลี่ยนแปลงราคาซูเปอร์มาร์เก็ต
- กล่าวถึงวิธีสแครปเว็บไซต์ที่เรนเดอร์ด้วย JavaScript รวมถึงวิธีทำระบบอัตโนมัติและการปรับแต่ง
- อธิบายวิธีลดต้นทุนและหลีกเลี่ยงการจำกัด IP ด้วย Hetzner และ Tailscale
- บทความนี้อาจมีประโยชน์สำหรับผู้ที่สนใจเว็บสแครปและระบบอัตโนมัติ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
แชร์ประสบการณ์ที่เจอปัญหาคล้ายกัน
กำลังทำโปรเจกต์ลักษณะคล้ายกันในนิวซีแลนด์
เคยทำเว็บไซต์ลักษณะคล้ายกันและได้รับความสนใจมาก
ซูเปอร์มาร์เก็ตใหญ่ 2 แห่งของออสเตรเลียอาจผูกขาดได้ผ่านอัลกอริทึม AI วิเคราะห์ราคา
ดำเนินงานในตลาดสวีเดนมานานกว่า 8 ปี
ถ้ามีความโปร่งใสด้านราคา การติดตามจะง่ายขึ้นมาก
วิธีเปลี่ยนแปลงโดยไม่ให้ scraper ล้มเหลว
แชร์ประสบการณ์ติดตามราคาเมื่อต้องย้ายไปพื้นที่ใหม่
สิ่งที่ยากกว่าการ scrape คือการหลบเลี่ยงระบบบล็อกที่ซับซ้อนขึ้นเรื่อย ๆ
ปัญหาการเรนเดอร์ด้วย JavaScript ฝั่งไคลเอนต์