網頁抓取工具箱:標準庫實現的 Agent 網頁採集 Skill

前言

做數據採集或寫技術介紹時,經常需要把公開網頁裏的標題、正文或某一塊 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 對接。

  1. 單 URL 抓取(scripts/fetch.py)
    請求頁面,自動處理編碼,解析 HTML,返回標題、正文、meta(如 description、keywords)及耗時等統計。

  2. 批量抓取(scripts/batch_fetch.py)
    對 URL 列表併發請求,支持去重,並輸出成功/失敗彙總報告。默認可調併發數與請求間隔。

  3. 指定元素提取(scripts/extract.py)
    按簡化選擇器(tag、class、id、attr)匹配節點,返回匹配元素的內容列表。

  4. 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜