# Data Extraction

> Designs web scraping / data extraction strategies: DOM analysis, multi-tier selectors with fallbacks, validation, transformation mapping, performance planning. Use when planning to scrape a site, extract structured data from HTML/DOM, or handle pagination / anti-scraping. Triggers: 資料提取, 抓取策略, web scraping, 選擇器設計, 爬蟲規劃. Do NOT use for implementing scraper code.

- Skill: `tarrragon/data-extraction` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tarrragon/data-extraction`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tarrragon/data-extraction/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: tarrragon (https://skillmd.com/u/tarrragon)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/tarrragon/data-extraction

---


# Data Extraction Strategy

設計網頁資料提取（scraping）策略的步驟化流程。本 skill 提供與角色無關的通用抓取策略——任何代理人或主線程觸發時得到同一套流程，避免策略綁定特定人格。

**定位**：策略規劃，非程式碼實作。產出為提取策略設計文件（選擇器規劃 / 驗證規則 / 轉換映射），供實作代理人據以撰寫抓取程式碼。本 skill 不撰寫抓取程式碼。

**通用性**：以下流程為跨網站通用策略骨架，不綁定任何特定書城或網站。套用到具體目標時，將各步驟的「目標對象」替換為實際網站的 DOM、欄位、載入模式。

---

## 五步驟策略流程（核心 workflow）

依序執行五個步驟，每步先確立目標再展開規劃。前一步的產出是後一步的輸入。

### 步驟 1：網頁資料結構分析

**目標**：理解目標網站的資料結構、載入機制和動態內容模式。

1. 分析目標網站的 DOM 結構和資料排列方式
2. 識別所有可能的資料提取點和選擇器候選
3. 判斷內容是否動態載入、是否需要 JavaScript 執行
4. 規劃如何處理分頁、無限捲動等載入模式
5. 評估反爬蟲機制並規劃應對策略

### 步驟 2：資料提取策略設計

**目標**：設計完整、可行且合乎使用條款的提取方案。

1. 規劃提取優先級：先提取關鍵資料，再提取附加資料
2. 設計多層次選擇器：主選擇器 + 備用選擇器 + 降級方案（DOM 結構變更時的容錯來源）
3. 規劃提取頻率與速率限制（Rate Limiting）
4. 定義請求頭、User-Agent 等設定
5. 規劃錯誤恢復與重試機制

> **多層選擇器是容錯設計核心**：目標網站 DOM 結構可能在不通知的情況下變更，單一選擇器易在改版後靜默失效。主 / 備用 / 降級三層讓單一選擇器失效時仍能命中。

### 步驟 3：資料驗證與清理流程設計

**目標**：確保提取資料的品質與完整性。

1. 定義每個欄位的驗證規則：格式、長度、有效性
2. 設計清理邏輯：移除空格、HTML 標籤、特殊字元
3. 規劃異常值處理：異常值檢測 + 替代方案
4. 定義缺失資料的處理策略
5. 設計資料完整性檢查

> **單欄位失敗不丟整筆**：區分必要欄位與可選欄位。可選欄位提取失敗時保留該筆其餘資料，僅必要欄位缺失才視為整筆失敗，避免容錯不足導致資料大量流失。

### 步驟 4：資料轉換規則定義

**目標**：將原始提取資料轉換為目標系統需要的格式。

1. 定義型別轉換規則（字串 → 日期 / 數字等）
2. 規劃標準化流程：統一格式、單位轉換
3. 設計聚合邏輯：多源資料合併、去重
4. 定義映射規則：源資料欄位 → 系統欄位
5. 規劃結構化輸出格式

### 步驟 5：提取效能與可靠性規劃

**目標**：確保提取過程高效可靠。

1. 評估提取複雜度與預期執行時間
2. 規劃並行提取策略（若適用）
3. 設計快取機制減少重複提取
4. 規劃監控與日誌記錄
5. 定義效能基準與最佳化目標

---

## When to Read Which Reference

| 情境 | 讀此 reference |
|------|---------------|
| 需要產出正式的「資料提取策略設計文件」，要完整章節範本（選擇器優先級表 / 驗證規則表 / 轉換映射表 / 效能評估 / 風險評估） | `references/strategy-document-template.md` |

完成五步驟規劃後，依範本將結論整理為策略文件交付實作代理人。

---

## Examples

| 輸入 | 動作 | 輸出 |
|------|------|------|
| 「規劃如何從某商品列表頁抓取品名、價格、庫存」 | 套用五步驟：分析 DOM → 設計三層選擇器 → 定義驗證（價格為數字、品名非空）→ 映射到系統欄位 → 評估分頁載入效能 | 依 `references/strategy-document-template.md` 產出策略文件 |
| 「目標網站改版後選擇器失效」 | 回到步驟 1 重新分析 DOM，步驟 2 補強備用 / 降級選擇器層級 | 更新後的選擇器優先級表 |
| 「資料量大，抓取很慢」 | 套用步驟 5：評估複雜度、規劃並行與快取、設定效能基準 | 效能與可靠性規劃章節 |

---

## Troubleshooting

| 症狀 | 原因 | 解法 |
|------|------|------|
| 改版後整批提取失敗 | 只設計單一選擇器，無容錯層 | 步驟 2 補主 / 備用 / 降級三層選擇器 |
| 資料筆數遠少於預期 | 單一欄位失敗丟棄整筆 | 步驟 3 區分必要 / 可選欄位，可選失敗保留其餘 |
| 被目標站封鎖 | 未規劃速率限制 / 反爬蟲應對 | 步驟 1 評估反爬蟲機制，步驟 2 設定速率限制與請求頭 |
| 抓到的資料格式不一致 | 缺轉換與標準化規則 | 步驟 4 定義型別轉換與標準化流程 |

---

版本紀錄在同目錄的 `CHANGELOG.md`。

