前言¶
做數據採集或寫技術介紹時,經常需要把公開網頁裏的標題、正文或某一塊 DOM 拿出來。常見做法是臨時寫一段 requests + BeautifulSoup,或者讓 Agent 去調瀏覽器類 MCP。前者要裝依賴、維護腳本;後者對「只要靜態 HTML」的頁面往往過重。
下面介紹 SkillHub 上的 網頁抓取工具箱(@user_f28fdad8/oc-web-fetch):用四個可執行 Python 腳本覆蓋單頁抓取、批量抓取、按條件抽元素、HTML 轉 Markdown,且只依賴 Python 標準庫,裝好 Skill 後 Agent 可按 JSON 入參直接調用。
這是什麼¶
網頁抓取工具箱是社區發佈者 user_f28fdad8 在 SkillHub 上架的 Agent Skill,座標 @user_f28fdad8/oc-web-fetch,當前版本 1.0.0,分類爲 data-analysis,標籤標明 requires_api_key=false(無需 API Key)。
定位是輕量級網頁內容抓取與轉換:輸入 URL(或 HTML 字符串),輸出結構化 JSON 或 Markdown 文本,方便 Agent 做摘要、入庫或二次處理。
官方頁面:
- SkillHub:https://www.skillhub.cn/skills/user_f28fdad8/oc-web-fetch
- API 入口:https://api.skillhub.cn/user_f28fdad8/oc-web-fetch
核心功能¶
Skill 內 SKILL.md 與 scripts/ 目錄對應四類能力,輸入輸出均爲 JSON,便於 Agent 對接。
-
單 URL 抓取(
scripts/fetch.py)
請求頁面,自動處理編碼,解析 HTML,返回標題、正文、meta(如 description、keywords)及耗時等統計。 -
批量抓取(
scripts/batch_fetch.py)
對 URL 列表併發請求,支持去重,並輸出成功/失敗彙總報告。默認可調併發數與請求間隔。 -
指定元素提取(
scripts/extract.py)
按簡化選擇器(tag、class、id、attr)匹配節點,返回匹配元素的內容列表。 -
HTML 轉 Markdown(
scripts/to_markdown.py)
從 URL 或 HTML 字符串轉換,過濾導航、腳本等噪聲標籤,保留標題、段落、列表、鏈接、圖片等結構。
實現上強調:僅使用 urllib、html.parser、json、re 等標準庫;單頁抓取帶編碼檢測(文檔寫明支持 UTF-8、GBK、GB2312 等);失敗時返回明確錯誤信息而非直接崩潰。
安裝與啓用¶
通過 SkillHub CLI 安裝¶
先確認本機是否已有 skillhub:
command -v skillhub && skillhub --version
未安裝時,可按 SkillHub 官方說明執行完整安裝或僅 CLI(文檔地址:https://skillhub.cn/install/skillhub.md):
curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash
安裝 Skill 時,必須用 --dir 指向當前 Agent 的 skills 目錄,否則默認落在 ./skills/ 可能不會被識別。以本 Skill 爲例:
skillhub install @user_f28fdad8/oc-web-fetch --dir ~/.cursor/skills/
常見客戶端 skills 路徑(摘自 SkillHub 安裝文檔):
- Cursor:
~/.cursor/skills/ - Claude Code:
~/.claude/skills/ - Codex:
~/.codex/skills/或項目下的.agents/skills/
SkillHub 頁面也提供「讓 AI 根據 https://skillhub.cn/install/skillhub.md 安裝 @user_f28fdad8/oc-web-fetch」的提示詞,效果與上述 CLI 安裝一致,只是由 Agent 代爲執行步驟。
安裝完成後,在對話中觸發與網頁抓取相關的意圖(如「抓取網頁」「HTML 轉 Markdown」「批量抓取」等,見 Skill 元數據中的 trigger 字段)時,Agent 應加載該 Skill 並按 SKILL.md 調用對應腳本。
典型用法¶
以下命令需在 Skill 包根目錄(含 scripts/ 的目錄)下執行,路徑以你本機安裝位置爲準。
1、抓取單個網頁¶
python scripts/fetch.py --input '{"url": "https://example.com"}'
可選字段 timeout 默認 10(秒)。成功時返回 status、title、content、meta、stats 等字段的 JSON。
2、批量抓取¶
python scripts/batch_fetch.py --input '{"urls": ["https://example.com/page1", "https://example.com/page2"]}'
可選:concurrency 默認 3,delay 默認 1(秒)。輸出每個 URL 的結果及彙總報告。
3、按選擇器提取區域¶
python scripts/extract.py --input '{"url": "https://example.com", "selector": {"tag": "div", "class": "article-content"}}'
selector 支持 tag、class、id;attr 可按 name:value 或僅屬性名匹配。
4、網頁轉 Markdown¶
python scripts/to_markdown.py --input '{"url": "https://example.com"}'
也可傳入 html 字段代替 URL。輸出 Markdown 文本及轉換統計。
適用場景與注意¶
適合誰
- 需要快速從靜態 HTML 頁面取正文、meta 或局部 DOM,且希望零 pip 依賴、腳本可被 Agent 穩定調用。
- 批量拉取若干公開 URL,並需要簡單的併發與去重、彙總。
限制與注意
- 基於
urllib與html.parser,不執行 JavaScript,對強依賴前端渲染的站點,正文可能不完整;此類場景仍需瀏覽器或專用渲染方案。 extract.py的選擇器是標籤/class/id/屬性的組合匹配,不是完整 CSS 選擇器語法;複雜頁面需多試幾次條件或改用單頁抓取後再由 Agent 處理文本。- 批量抓取請合理設置
concurrency與delay,遵守目標站點的訪問頻率與 robots 約定;本 Skill 不提供代理、Cookie 登錄等高級能力。 - 社區 Skill,行爲以包內
SKILL.md與腳本爲準;SkillHub 頁面統計(截至資料抓取)顯示評分 100000、下載 3025 次,供選型參考。
結尾¶
網頁抓取工具箱把「單頁、批量、抽元素、轉 Markdown」拆成四個標準庫腳本,並用 JSON 統一入參出參,適合作爲 Agent 側的輕量採集層。若你的環境已配置 SkillHub,可按上文命令裝入 Cursor 等客戶端的 skills 目錄後直接使用。
更多信息與安裝入口:https://www.skillhub.cn/skills/user_f28fdad8/oc-web-fetch