如何高效抓取 ABC-MART 產品數據:從爬蟲到 API 解決方案
在電商行業,掌握即時的商品數據對比價格、監控庫存和分析市場趨勢至關重要。ABC-MART 作為日本、韓國、台灣等地知名的球鞋電商平台,許多開發者和球鞋愛好者都希望能夠抓取它的商品數據,以便進行市場研究或自動化任務。
本篇文章將介紹如何抓取 ABC-MART 的產品數據,從傳統的爬蟲方法到使用 Luckdata API 進行高效數據採集,適用於開發者、數據分析師以及球鞋愛好者。
方法 1:使用 Web 爬蟲抓取 ABC-MART 數據
1️⃣ 確定目標網站結構
首先,我們需要訪問 ABC-MART 官網並查看商品頁面的 HTML 結構:
F12 打開開發者工具(DevTools)
查看 "Elements" 選項,檢查產品資訊的 HTML 結構(如
div
、span
標籤)查看 "Network" 選項,查找 API 請求(如 XHR / Fetch 請求)
2️⃣ 確定爬取方式
如果產品數據是靜態 HTML → 使用
BeautifulSoup
解析頁面如果數據是 JavaScript 渲染 → 使用
Selenium
或抓取 API
使用 BeautifulSoup(適用於靜態頁面)
如果產品數據直接寫在 HTML 裡,可以用 BeautifulSoup
解析:
import requestsfrom 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 webdriverfrom 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 requestsAPI_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 csvwith 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 jsonwith 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 是更好的選擇