สร้าง Web Scraper Python 2026: คู่มือ Extract ข้อมูล E-commerce

สร้าง Web Scraper ด้วย Python 2026: คู่มือสำหรับ Extract ข้อมูลจาก E-commerce Websites

เมื่อสองปีก่อน ผมได้รับมอบหมายให้สร้างระบบสำหรับทีมการวิเคราะห์ข้อมูลการตลาดของบริษัทเรา ซึ่งหน้าที่หลักคือการรวบรวมข้อมูลราคาและรายละเอียดสินค้าจากเว็บไซต์ e-commerce ชั้นนำต่างๆ อย่าง Lazada, Shopee, และ Amazon. ตอนนั้นเราไม่มีข้อมูลราคาสินค้าแบบ real-time ทำให้การตัดสินใจด้านราคาและแคมเปญการตลาดเป็นไปได้ยากลำบาก เราต้องรวบรวมข้อมูลด้วยมือ ซึ่งทั้งใช้เวลานานและมีโอกาสเกิดข้อผิดพลาดสูง ผมและทีมต้องหาทางแก้ไขปัญหาแบบนี้ให้ได้เร็วที่สุด

ปัญหาหลักคือการดึงข้อมูลจากเว็บไซต์ e-commerce ที่มีการออกแบบที่ซับซ้อน มีการใช้ JavaScript และ AJAX ทำให้ข้อมูลไม่ได้แสดงผลใน HTML แบบปกติ การใช้เครื่องมือทั่วไปอย่าง `wget` หรือ `curl` ไม่สามารถดึงข้อมูลเหล่านั้นได้ ดังนั้นเราจึงต้องสร้างระบบที่สามารถ “อ่าน” หน้าเว็บและดึงข้อมูลที่ต้องการออกมาได้อย่างอัตโนมัติ บทความนี้จะแนะนำวิธีการสร้าง web scraper ด้วย Python 2026 โดยเน้นที่ความง่ายในการใช้งาน, ความยืดหยุ่น และการจัดการกับปัญหาที่อาจเกิดขึ้นจริง

สินค้าแนะนำที่เกี่ยวข้อง

Sponsored · Lazada

Prerequisites

a group of white letters on a wooden surface
Photo by sarah b on Unsplash

ก่อนเริ่ม เราต้องมีสิ่งต่อไปนี้:

  • Python 2026 (แนะนำเวอร์ชัน 2.9 ขึ้นไป)
  • Pip (package installer สำหรับ Python)
  • Browser ที่สามารถเปิดและโหลดหน้าเว็บได้
  • IDE หรือ Text Editor ที่สะดวก

เราจะใช้ library หลักๆ คือ `requests` สำหรับการดึงข้อมูลจากเว็บไซต์ และ `BeautifulSoup4` สำหรับการ parse HTML.

Installing Libraries

เปิด terminal หรือ command prompt แล้วรันคำสั่งต่อไปนี้เพื่อติดตั้ง library ที่จำเป็น:

pip install requests beautifulsoup4

Basic Scraper Setup

a white and black sign
Photo by sarah b on Unsplash

ลองดูตัวอย่างง่ายๆ ที่จะดึงชื่อและราคาของสินค้าจากหน้าเว็บของร้านค้าสมมติ:

import requests
from bs4 import BeautifulSoup

url = 'https://www.example-ecommerce.com/products' # Replace with actual URL
response = requests.get(url)

if response.status_code == 200:
  soup = BeautifulSoup(response.content, 'html.parser')
  products = soup.find_all('div', class_='product-item') # Replace with actual class name

  for product in products:
    name = product.find('h2').text
    price = product.find('span', class_='price').text # Replace with actual class name

    print 'Product Name:', name
    print 'Price:', price
else:
  print 'Error fetching page:', response.status_code

Output ที่ควรได้: (ตัวอย่าง) Product Name: Laptop X1 Price: 59,999 บาท Product Name: Smartphone Z2 Price: 19,990 บาท

Error ที่มักเจอและวิธีแก้: * **404 Not Found:** URL ที่ใส่ไม่ถูกต้อง หรือเว็บไซต์มีการเปลี่ยนแปลงโครงสร้าง * **Connection Error:** ปัญหาการเชื่อมต่ออินเทอร์เน็ต หรือเว็บไซต์ถูกปิด * **HTML Structure Changes:** โครงสร้างของ HTML เปลี่ยนไป ทำให้ `find_all` หรือ `find` ไม่สามารถ locate element ได้

Handling Dynamic Content (JavaScript)

เว็บไซต์ e-commerce หลายแห่งใช้ JavaScript เพื่อโหลดข้อมูลแบบ dynamic ทำให้ข้อมูลไม่ได้แสดงผลใน HTML แบบปกติ ในกรณีนี้ เราต้องใช้ library ที่สามารถ render JavaScript ได้ เช่น `Selenium`

ตัวอย่างการใช้ Selenium (ต้องติดตั้ง webdriver ของ Chrome/Firefox ด้วย):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument("--headless") # Run Chrome in headless mode (no GUI)

# Initialize Chrome driver
driver = webdriver.Chrome(options=chrome_options)

url = 'https://www.example-ecommerce.com/products'
driver.get(url)

# Wait for the dynamic content to load (adjust timeout as needed)
driver.implicitly_wait(10)

# Find the elements containing the product data
products = driver.find_elements(By.CSS_SELECTOR, '.product-item') # Replace with actual CSS selector

for product in products:
  name = product.find_element(By.TAG_NAME, 'h2').text
  price = product.find_element(By.CLASS_NAME, 'price').text # Replace with actual class name

  print 'Product Name:', name
  print 'Price:', price

driver.quit()

Prerequisite: ต้องติดตั้ง Selenium และ webdriver ของ Chrome (หรือ Firefox) ด้วย.

สิ่งที่ควรระวัง / ข้อผิดพลาดที่เจอบ่อย

ในการสร้าง web scraper เราต้องระวังสิ่งต่อไปนี้:

  • **Robots.txt:** ตรวจสอบไฟล์ `robots.txt` ของเว็บไซต์ เพื่อดูว่ามีกฎเกณฑ์ในการ scrape เว็บไซต์นั้นหรือไม่ การละเมิดกฎเกณฑ์นี้อาจทำให้ IP ของเราถูก block
  • **Rate Limiting:** เว็บไซต์หลายแห่งมีการจำกัดจำนวน request ที่เราสามารถส่งไปยังเว็บไซต์ในช่วงเวลาหนึ่ง การส่ง request จำนวนมากเกินไปอาจทำให้เราถูก block
  • **Website Changes:** โครงสร้างของเว็บไซต์อาจเปลี่ยนแปลงได้ตลอดเวลา ทำให้ web scraper ของเราทำงานไม่ได้
  • **User Agent:** ใส่ User Agent ที่เหมาะสมใน request ของเรา เพื่อให้เว็บไซต์รู้ว่าเราเป็น bot หรือ human

Data Cleaning (Python 2026)

หลังจากดึงข้อมูลมาแล้ว เราต้องทำความสะอาดข้อมูลให้พร้อมใช้งาน โดยเฉพาะข้อมูลราคา ซึ่งอาจมีรูปแบบที่แตกต่างกัน เช่น มีเครื่องหมายบาท, สตางค์, หรือไม่มีเครื่องหมายเหล่านี้ เราสามารถใช้ library Python 2026 Data Cleaning เพื่อจัดการกับข้อมูลเหล่านี้

คำถาม

คำถาม

1. ผมควรจะใช้ web scraper กับเว็บไซต์ประเภทไหน?

คำตอบ: Web scraper เหมาะสำหรับเว็บไซต์ที่มีข้อมูลที่ต้องการดึงออกมาอย่างเป็นระเบียบ เช่น รายการสินค้า, ราคา, ข้อมูลติดต่อ ฯลฯ

คำถาม

2. ผมควรจะใช้ library อะไรในการสร้าง web scraper?

คำตอบ: ผมแนะนำให้ใช้ `requests` สำหรับการดึงข้อมูล และ `BeautifulSoup4` สำหรับการ parse HTML

คำถาม

3. ผมจะป้องกันการถูก block โดยเว็บไซต์ e-commerce ได้อย่างไร?

คำตอบ: เราควรจะใช้ delay ระหว่างการส่ง request, ใส่ User Agent ที่เหมาะสม, และตรวจสอบ `robots.txt` ของเว็บไซต์

สรุป

ผมเชื่อว่าการสร้าง web scraper เป็นทักษะที่สำคัญสำหรับนักวิเคราะห์ข้อมูลและการตลาด ใน Python 2026 การใช้ library ที่เหมาะสมและการจัดการกับปัญหาที่อาจเกิดขึ้นอย่างรอบคอบ จะช่วยให้เราสร้าง web scraper ที่มีประสิทธิภาพและเชื่อถือได้

ประสบการณ์ส่วนตัว: ตอนที่ผมทำโปรเจกต์นี้ ผมใช้เวลาประมาณ 2-3 วันในการสร้าง web scraper ที่สามารถดึงข้อมูลราคาและรายละเอียดสินค้าจาก Lazada ได้อย่างอัตโนมัติ ผมพบว่าการจัดการกับ JavaScript และการเปลี่ยนแปลงของโครงสร้าง HTML เป็นสิ่งที่ท้าทายที่สุด แต่ด้วยความอดทนและการทดลอง เราก็สามารถแก้ไขปัญหาเหล่านี้ได้สำเร็จ

Next Step: ลองสร้าง web scraper ที่สามารถดึงข้อมูลจากเว็บไซต์ e-commerce ที่คุณสนใจ และนำข้อมูลเหล่านั้นมาวิเคราะห์เพื่อสร้าง insights ที่มีประโยชน์ต่อธุรกิจของคุณ นอกจากนี้ คุณยังสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ ethical web scraping และการเคารพสิทธิ์ของเว็บไซต์

Boonyadol Morruchai (Senior Full-stack Developer)

ผมเป็น IT Professional ที่มีประสบการณ์ในสายงานมากว่า 20 ปี เชี่ยวชาญการออกแบบระบบ Enterprise และ Automation Tools ปัจจุบันมุ่งเน้นการประยุกต์ใช้ AI (Gemini/OpenAI) เพื่อเพิ่มประสิทธิภาพในการเขียน Code และการจัดการข้อมูลขนาดใหญ่ บล็อกนี้สร้างขึ้นเพื่อแชร์ "ประสบการณ์หน้างาน" ปัญหาจริงที่เจอ และวิธีแก้ปัญหาฉบับ Senior Dev ครับ

แสดงความคิดเห็น

ใหม่กว่า เก่ากว่า