Web Scraping ด้วย Python: ดึงราคาสินค้าคู่แข่งมาลง Excel อัตโนมัติทุกเช้า
ในธุรกิจค้าขายออนไลน์หรือ E-Commerce “ราคา” คือตัวแปรชี้ชะตา หากคู่แข่งลดราคาลง 50 บาท ลูกค้าก็พร้อมจะเปลี่ยนร้านทันที เจ้าของร้านหรือทีมการตลาดจำนวนมากจึงต้องให้พนักงานนั่งเปิดเบราว์เซอร์ ส่องดูราคาสินค้า 50 รายการของคู่แข่งทุกเช้า แล้วจดลงตาราง
วันนี้เราจะมาสร้าง “สายสืบดิจิทัล” ด้วยเทคนิคที่เรียกว่า Web Scraping โดยใช้ภาษา Python ส่งหุ่นยนต์ไปกวาดข้อมูลราคาและสต็อกสินค้าจากหน้าเว็บ มาบันทึกใส่ Excel ให้คุณแบบอัตโนมัติก่อนที่คุณจะตื่นนอนเสียอีกครับ!
เครื่องมือหลัก: Requests + BeautifulSoup
การทำ Web Scraping พื้นฐานใช้เครื่องมือยอดนิยม 2 ชิ้นที่ติดตั้งง่ายดายผ่านคำสั่ง pip install requests beautifulsoup4 pandas:
- Requests: เปรียบเหมือนคนเดินไปเคาะประตู ขอซอร์สโค้ด HTML ของหน้าเว็บเป้าหมายกลับมา
- BeautifulSoup: เปรียบเหมือนแว่นขยาย คอยกรองแยกแยะแท็ก HTML (เช่น
<span class="price">) เพื่อดึงเอาเฉพาะตัวเลขราคาออกมา
import requests
from bs4 import BeautifulSoup
url = “https://example.com/products”
headers = {“User-Agent”: “Mozilla/5.0”}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, “html.parser”)
# ค้นหาชื่อและราคาสินค้าจากคลาส CSS
products = soup.find_all(“div”, class_=“product-card”)
for item in products:
name = item.find(“h2”).text.strip()
price = item.find(“span”, class_=“price”).text.strip()
print(f”สินค้า: {name} | ราคา: {price}”)
from bs4 import BeautifulSoup
url = “https://example.com/products”
headers = {“User-Agent”: “Mozilla/5.0”}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, “html.parser”)
# ค้นหาชื่อและราคาสินค้าจากคลาส CSS
products = soup.find_all(“div”, class_=“product-card”)
for item in products:
name = item.find(“h2”).text.strip()
price = item.find(“span”, class_=“price”).text.strip()
print(f”สินค้า: {name} | ราคา: {price}”)
3 กฎเหล็กและมารยาทในการทำ Scraping
- ใส่คำสั่งชะลอความเร็ว (Rate Limiting): ห้ามยิงสคริปต์ขอข้อมูล 1,000 ครั้งในวินาทีเดียว เพราะจะกลายเป็นการยิง DDoS ถล่มเว็บผู้อื่น ให้ใส่
time.sleep(2)หน่วงเวลา 2-3 วินาทีต่อหน้าเสมอ - ตรวจสอบไฟล์ robots.txt: พิมพ์
เว็บเป้าหมาย.com/robots.txtเพื่อตรวจดูว่าเจ้าของเว็บอนุญาตให้บอทเข้าถึงหน้าไหนได้บ้าง - ดึงเฉพาะข้อมูลสาธารณะ: ห้ามสแครปข้อมูลส่วนบุคคล (PDPA) หรือข้อมูลที่ต้องล็อกอินเข้าถึงโดยไม่ได้รับอนุญาตครับ!