前言¶
在 DeepSeek Harness(DSH)中,read_url 適合回答“這個頁面說了什麼”,但它將頁面解析爲文本或 Markdown 後,會丟失元數據(如排名、價格、點贊數)與具體條目之間的關聯。
dsh-fetch-data 旨在回答“這些數據到底是什麼”。它攔截頁面的真實數據 API(XHR/fetch JSON),提取出結構化的字段,保留精確的字段歸屬。
插件介紹¶
dsh-fetch-data 是 DeepSeek Harness 的結構化數據提取插件。它通過瀏覽器引擎(Playwright)捕獲頁面加載過程中的網絡請求,提取出 JSON 接口中的數據,並返回給 DSH 使用。
- 插件名:
dsh-fetch-data - 維護者:2672243194
- 許可證:MIT
核心功能¶
該插件主要提供以下能力:
- 攔截 API:捕獲頁面的 XHR 和 fetch 請求,獲取真實的 JSON 響應。
- 模式提取:
- 結構模式:返回自動選擇的端點結構以及所有 JSON 接口清單(路徑、大小、是否含數組),方便模型選擇具體接口。
- 字段模式:提取指定的字段路徑(如
data.list[].title)。
- 自動選擇:自動從捕獲的 JSON 中選擇包含數組的最大端點作爲默認數據源。
- 增強捕獲:支持自動滾動觸發懶加載數據,支持自動解包 JSONP 響應。
安裝與啓用¶
使用前需安裝 Playwright 作爲瀏覽器引擎,然後通過 DSH 命令添加插件。
# 1. 進入 DSH 配置目錄
cd <DSH profile dir>
# 2. 安裝 Playwright 並安裝 Chromium 瀏覽器
npm i playwright && npx playwright install chromium
# 3. 添加插件
dsh plugin --profile web add github:2672243194/dsh-fetch-data
使用示例¶
插件提供 fetch_data 函數,支持以下參數:
fetch_data(url, api?, fields?, maxItems?)
1. 結構模式(默認)¶
不傳 fields 參數時,返回接口結構概覽和所有可用的 JSON 接口清單。這有助於模型確定具體的數據接口。
頁面 25 個 JSON 接口
選中: /x/web-interface/ranking/v2 (137763B)
結構: { code: number, message: string, ttl: number, data: { note: string, list: [100] { aid: number, ... } } }
接口清單(可傳 api=<路徑> 指定其中一個再提取字段):
/x/web-interface/nav · 249B
/x/vip/ads/materials · 1140B · 含數組
...
2. 字段模式¶
傳入 fields 參數,提取具體的字段值。[] 用於表示數組路徑。
data.list[].title (前5條):
用MC還原《神的隨波逐流》 【B萌應援】
WasteTheFallen丨首曝PV&實機演示:凝視深淵,人性漸泯
...
data.list[].stat.view (前5條):
2428730
10326863
...
3. 固定端點模式¶
通過 api 參數強制指定某個接口,忽略自動選擇邏輯。
fetch_data(url, "/x/web-interface/ranking/v2")
適用場景與限制¶
- 適用場景:適用於需要精確數值、列表數據的抓取,如排行榜、商品價格、文章閱讀量等。
- 登錄限制:無法訪問登錄牆後的 API(與
read_url行爲一致)。 - 靜態站點:純靜態站點會返回“no JSON API captured”錯誤。
- 依賴要求:需要 Node.js >= 20。
插件設計爲零運行時依賴(除 Node.js 內置模塊外),但必須依賴 Playwright 作爲瀏覽器引擎來實現網絡攔截。
結語¶
dsh-fetch-data 通過攔截真實 API 彌補了文本提取器在數據精度上的不足,適合需要獲取精確數值和結構化數據的場景。