如何高效抓取 ABC-MART 產品數據:從爬蟲到 API 解決方案

在電商行業,掌握即時的商品數據對比價格、監控庫存和分析市場趨勢至關重要。ABC-MART 作為日本、韓國、台灣等地知名的球鞋電商平台,許多開發者和球鞋愛好者都希望能夠抓取它的商品數據,以便進行市場研究或自動化任務。

本篇文章將介紹如何抓取 ABC-MART 的產品數據,從傳統的爬蟲方法到使用 Luckdata API 進行高效數據採集,適用於開發者、數據分析師以及球鞋愛好者。

方法 1:使用 Web 爬蟲抓取 ABC-MART 數據

1️⃣ 確定目標網站結構

首先,我們需要訪問 ABC-MART 官網並查看商品頁面的 HTML 結構:

  • F12 打開開發者工具(DevTools)

  • 查看 "Elements" 選項,檢查產品資訊的 HTML 結構(如 divspan 標籤)

  • 查看 "Network" 選項,查找 API 請求(如 XHR / Fetch 請求)

2️⃣ 確定爬取方式

  • 如果產品數據是靜態 HTML → 使用 BeautifulSoup 解析頁面

  • 如果數據是 JavaScript 渲染 → 使用 Selenium 或抓取 API

使用 BeautifulSoup(適用於靜態頁面)

如果產品數據直接寫在 HTML 裡,可以用 BeautifulSoup 解析:

import requests

from bs4 import BeautifulSoup

url = "https://www.abc-mart.net/shop/g/g12345678/"

headers = {"User-Agent": "Mozilla/5.0"}

response = requests.get(url, headers=headers)

soup = BeautifulSoup(response.text, "html.parser")

# 獲取產品資訊

product_name = soup.find("h1", class_="product-title").text.strip()

price = soup.find("span", class_="price").text.strip()

print(f"產品名稱: {product_name}")

print(f"價格: {price}")

使用 Selenium(適用於動態加載頁面)

如果頁面是 JavaScript 渲染,可以用 Selenium 模擬瀏覽器抓取:

from selenium import webdriver

from selenium.webdriver.common.by import By

import time

driver = webdriver.Chrome()

url = "https://www.abc-mart.net/shop/g/g12345678/"

driver.get(url)

time.sleep(3) # 等待頁面加載

product_name = driver.find_element(By.CLASS_NAME, "product-title").text

price = driver.find_element(By.CLASS_NAME, "price").text

print(f"產品名稱: {product_name}")

print(f"價格: {price}")

driver.quit()

3️⃣ 反爬蟲應對策略

由於 ABC-MART 可能有反爬機制,可以使用:
代理 IP(防止 IP 被封)
模擬 User-Agent(偽裝成真實用戶)
降低爬取頻率(避免觸發風控)
模擬人類行為(Selenium 可模擬滑鼠滑動、點擊)

方法 2:使用 Luckdata API 高效獲取數據

1️⃣ 什麼是 Luckdata API?

Luckdata Sneaker API 是一個整合多個球鞋電商接口的工具,專門用於抓取ABC-MART、Footlocker、Adidas等平台的最新數據,包括:
商品名稱
價格
庫存狀態
圖片鏈接

2️⃣ API 訂閱方案

  • Free 版($0/月,100 積分,每秒 1 請求)適合測試

  • Basic 版($18/月,12,000 積分,每秒 5 請求)適合中等需求

  • Pro 版($75/月,58,000 積分,每秒 10 請求)適合大規模爬取

  • Ultra 版($120/月,100,000 積分,每秒 15 請求)適合高頻爬取

3️⃣ 如何使用 Luckdata API 獲取 ABC-MART 數據?

Luckdata 提供了一個簡單的 GET 請求,可以直接獲取數據:

import requests

API_KEY = "your_key" # 替換為你的 API Key

product_url = "https://www.abc-mart.com.tw/product/uwrpdfcb"

api_url = f"https://luckdata.io/api/sneaker-API/get_vpx1?url={product_url}"

headers = {"X-Luckdata-Api-Key": API_KEY}

response = requests.get(api_url, headers=headers)

if response.status_code == 200:

data = response.json()

print(f"產品名稱: {data.get('name', 'N/A')}")

print(f"價格: {data.get('price', 'N/A')}")

print(f"庫存: {data.get('stock', 'N/A')}")

print(f"圖片鏈接: {data.get('image', 'N/A')}")

else:

print(f"請求失敗: {response.status_code}")

4️⃣ 批量抓取多個商品

如果你想抓取多個 ABC-MART 商品,可以批量調用 API:

product_urls = [

"https://www.abc-mart.com.tw/product/uwrpdfcb",

"https://www.abc-mart.com.tw/product/xyz12345"

]

def fetch_product_data(url):

api_url = f"https://luckdata.io/api/sneaker-API/get_vpx1?url={url}"

response = requests.get(api_url, headers={"X-Luckdata-Api-Key": API_KEY})

return response.json() if response.status_code == 200 else None

products = [fetch_product_data(url) for url in product_urls]

print("? 批量抓取完成!")

數據存儲

存 CSV

import csv

with open("abc_mart_products.csv", "w", newline="", encoding="utf-8") as file:

writer = csv.writer(file)

writer.writerow(["Product Name", "Price", "Stock", "Image URL"])

for product in products:

writer.writerow([product.get("name"), product.get("price"), product.get("stock"), product.get("image")])

存 JSON

import json

with open("abc_mart_products.json", "w", encoding="utf-8") as file:

json.dump(products, file, ensure_ascii=False, indent=4)

✅ 爬蟲 vs API,如何選擇?

方法

適用場景

難度

維護成本

速度

Web 爬蟲

適用於小規模數據採集

中等

需要應對反爬

Luckdata API

批量爬取,長期使用

簡單

低維護

如果只是小規模測試,可以用爬蟲
如果要批量抓取,Luckdata API 是更好的選擇