Skip to content

About

for web_scraping ex tissue

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation


👕 H&M 商品資訊自動化採集工具 (V100 Master Scraper)

📖 引言 (Introduction)

V100 Master Scraper 是一款基於 Python 開發的高性能自動化網頁採集系統,專為處理 H&M 官網的大規模商品數據而設計。本工具整合了 undetected-chromedriver 反偵測技術、多執行緒併發下載以及動態 Session 管理機制,旨在解決電子商務網站常見的 Cloudflare 阻擋與動態加載難題。透過高度參數化的配置,本工具能確保數據抓取過程的穩定性、隱蔽性與斷點續傳能力。


📊 運行邏輯與流程 (Workflow)

系統遵循以下自動化作業流程,確保數據的完整性與系統的自癒性:

  1. 環境初始化 :讀取歷史數據 CSV,針對 sku_id 執行正規化處理(補足 10 位數),建立已處理清單以避免重複作業。
  2. 動態分頁遍歷 :遍歷 RAW_TASKS 定義的 URL,模擬真人行為觸發 pagination-hybrid-button 載入更多,直至 DOM 結構完整。
  3. 變體挖掘 (Variant Discovery) :進入商品詳情頁後,遞迴解析所有顏色變體(Color Variants)之 URL 並加入優先處理隊列。
  4. 數據特徵提取 :利用 BeautifulSoup 解析名稱、價格、庫存狀態(含尺碼詳細資訊)。
  5. 異步持久化 :
  • 文本數據 :透過 pandas 即時寫入 CSV 並強制執行 flush()。
  • 二進位數據 :利用 ThreadPoolExecutor 進行圖片異步下載,優化 I/O 效率。
  1. 自癒機制 :若偵測到 HTTP 403 錯誤,系統將進入休眠模式並自動重啟瀏覽器執行個體,清理所有指紋足跡。

🚀 核心功能與優勢 (Key Features)

  • 🛡️ 進階反偵測 :採用 undetected-chromedriver 規避 Chrome 指紋偵測,有效繞過 Cloudflare 等待室。
  • 💾 斷點續傳機制 :具備增量抓取功能,啟動時自動比對已完成項,節省系統資源。
  • ⚡ 併發加速 (Concurrency) : 設 $N$ 為任務總數,$T_s$ 為單一商品抓取時間,$T_i$ 為圖片下載時間。傳統串列執行時間為 $N(T_s + T_i)$;本工具透過多執行緒處理,理論執行時間優化為: $$ T_{total} \approx N \cdot T_s + \max(T_{i,1}, T_{i,2}, \dots, T_{i,n}) $$
  • 🤖 自動化運維防禦 :
    • 403 偵測 :遇 Access Denied 自動暫停 300 秒。
    • 週期性重啟 :達到 RESTART_LIMIT (預設 35 件) 自動重啟 Session,防止內存溢漏。

🛠️ 技術棧 (Tech Stack)

組件 (Component) 技術 / 庫 (Technology) 用途 (Purpose)
核心開發 Python 3.8+ 系統主體與邏輯控制
自動化控制 undetected-chromedriver 模擬瀏覽器行為與繞過指紋偵測
DOM 解析 BeautifulSoup (lxml) 網頁結構化數據提取
數據處理 pandas & csv 數據持久化與進度管理
網路通訊 requests 圖片二進位串流下載
併發模型 ThreadPoolExecutor I/O 密集型任務加速

📥 快速啟動 (Quick Start)

1. 環境需求

  • Google Chrome 瀏覽器 (建議最新版本)。
  • Python 3.8 或以上版本。

2. 安裝必要套件

Bash

pip install requests pandas beautifulsoup4 lxml undetected-chromedriver

3. 配置參數設定

請在程式碼內的 CONFIG 字典中根據需求調整參數:

Python

CONFIG = {
    "CSV_PATH": "hm_final_project_v100.csv",  # 輸出數據檔案路徑
    "IMAGE_DIR": "hm_project_images",         # 圖片儲存目錄
    "MAX_THREADS": 4,                        # 圖片下載併發線程數
    "RESTART_LIMIT": 35,                     # 觸發重啟之商品門檻數
    "CHROME_VERSION": 144                    # 您的 Chrome 瀏覽器主版本
}

📂 數據規範 (Data Specification)

1. CSV 欄位定義

欄位名 類型 說明
sku_id String 嚴格 10 位數商品識別碼
gender String 商品性別分類
category String 商品大類 (Tops / Bottoms)
product_name String 完整商品名稱
color String 商品顏色特徵
sizes_in_stock Text 庫存尺碼 (以 `
price Integer 純數字格式價格
product_url String 原始商品詳情頁連結

2. 圖片儲存與採集策略

  • 儲存路徑 :./{IMAGE_DIR}/{sku_id}_{index}.jpg
  • 採集邏輯 :
  • 若總圖數 $> 3$:優先抓取 最後 3 張 (聚焦於平拍、細節與標籤)。
  • 若總圖數 $\leq 3$:抓取 前 2 張 ,確保模型訓練時的基本特徵一致性。

⚠️ 重要提醒 (Important Notes)

Caution

IP 封鎖風險 :H&M 設有嚴格的 Rate Limiting。若頻繁出現「Access Denied」,建議手動切換行動裝置熱點或開啟飛航模式以更換動態 IP。

Note

合規性聲明 :本腳本僅供學術研究與資料科學練習使用。執行時請務必遵守目標網站之 robots.txt 規範與相關法律條款。


📉 更新紀錄 (Changelog)

  • ** (Latest)** :
  • 實作 SKU 自動補零邏輯,防止資料庫導入時的數據丟失。
  • 整合 ThreadPoolExecutor 提升 40% 以上的圖片下載速度。
  • 新增 403 自動自癒休眠與 Session 重啟邏輯。

📚 參考文獻 (References)

  1. Python Web Scraping with Selenium and undetected-chromedriver , documentation, 2024.
  2. Efficient Data Ingestion for Machine Learning , Data Engineering Quarterly.
  3. H&M Web API structure and frontend patterns analysis .

About

for web_scraping ex tissue

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages