ABC-MART 熱門鞋款價格歷史分析(Python 可視化展示)

在球鞋市場中,價格波動是一個重要的考量因素。對於想要入手心儀鞋款的消費者來說,了解價格歷史、預測未來價格走勢,可以幫助他們在最佳時機購買球鞋,避免買貴。

本篇文章將結合 ABC-MART 的鞋款價格數據,使用 Python 進行數據爬取、分析和可視化,幫助大家了解熱門鞋款的價格趨勢。

1️⃣ 如何獲取 ABC-MART 鞋款價格數據?

方法 1:使用 Luckdata API(推薦 ✅)

如果你想快速獲取ABC-MART 的價格數據,可以使用 Luckdata API,Luckdata的 Sneaker API 可以直接返回商品價格、庫存、商品圖片等信息。

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')}")

else:

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

優點:無需複雜的爬取邏輯,直接獲取數據
缺點:需要訂閱 API 額度

方法 2:使用 Python 爬取 ABC-MART 官網數據(適用於個人分析)

如果你不想使用 API,可以使用 BeautifulSoup + Selenium,從 ABC-MART 網站直接爬取價格數據。

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}")

優點:免費,不受 API 限制
缺點:可能需要繞過反爬機制,數據存儲較複雜

2️⃣ 採集一段時間的數據,構建價格趨勢

為了分析價格變化,我們需要定期抓取數據,例如每天記錄一次,持續 1~2 個月。

自動記錄數據(每 24 小時爬取一次)

你可以使用 schedule 自動定時運行爬蟲,將數據保存到 CSV 文件中。

import csv

import schedule

import time

def fetch_price():

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

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

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

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

writer = csv.writer(file)

writer.writerow([time.strftime("%Y-%m-%d"), price])

print(f"記錄成功: {time.strftime('%Y-%m-%d')} 價格: {price}")

# 設置定時任務(每天 10:00 運行一次)

schedule.every().day.at("10:00").do(fetch_price)

while True:

schedule.run_pending()

time.sleep(60) # 每分鐘檢查一次

CSV 文件示例:

日期

價格(NTD)

2024-03-01

3200

2024-03-02

3100

2024-03-03

3000

3️⃣ 數據可視化:繪製價格趨勢圖

當我們收集到足夠的歷史數據後,可以使用 Matplotlib 和 Pandas 繪製價格趨勢圖。

使用 Matplotlib 生成價格折線圖

import pandas as pd

import matplotlib.pyplot as plt

# 讀取數據

df = pd.read_csv("sneaker_prices.csv", names=["日期", "價格"], parse_dates=["日期"])

# 轉換價格為數值

df["價格"] = df["價格"].str.replace("NT$", "").astype(float)

# 繪製折線圖

plt.figure(figsize=(10, 5))

plt.plot(df["日期"], df["價格"], marker="o", linestyle="-", color="b", label="價格走勢")

# 添加標題和標籤

plt.title("ABC-MART 熱門鞋款價格趨勢")

plt.xlabel("日期")

plt.ylabel("價格 (NTD)")

plt.legend()

plt.grid()

# 旋轉 X 軸標籤,使其更易讀

plt.xticks(rotation=45)

# 顯示圖表

plt.show()

4️⃣ 價格分析 & 購買建議

通過價格趨勢圖,我們可以得到以下 市場洞察

價格是否呈現下降趨勢?
如果過去 1 個月價格不斷下降,建議等待更低價格再入手。

是否有週期性促銷?
如果發現某些時間點(如週末、節假日、黑五)價格下降,建議在這些時間點購買。

庫存 & 價格變化的關係
如果庫存減少,價格可能會上漲。可以結合 Luckdata API 監控庫存,在補貨時迅速下單。

價格預測

我們可以使用 簡單移動平均(SMA)機器學習(如 Prophet) 預測未來價格走勢。

df["SMA_7"] = df["價格"].rolling(window=7).mean()

plt.plot(df["日期"], df["價格"], marker="o", label="實際價格")

plt.plot(df["日期"], df["SMA_7"], linestyle="--", color="r", label="7 天均線")

plt.legend()

plt.title("ABC-MART 鞋款價格趨勢 + 預測")

plt.show()

如果均線向下,意味著價格仍可能下降
如果均線向上,說明價格可能開始回升

5️⃣ 結論 & 總結

✅ 透過定期抓取 ABC-MART 熱門鞋款價格數據,我們可以構建價格歷史曲線,幫助用戶更好地決策何時購買球鞋。
✅ 結合 Luckdata APIPython 爬蟲,可以獲取價格、庫存等信息,實現智慧購物
✅ 透過 數據可視化 & 趨勢預測,可以判斷市場行情,抓住最低價購買時機