dsh-web-snapshot:把网页转成带来源和时间的 Markdown

前言

用模型处理网页内容,或者把网页存入知识库时,通常要手动复制。直接复制会带上导航、页脚、广告和一堆脚本;用 curl 抓下来又是满屏 HTML。更重要的是:抓下来的内容没有来源和抓取时间,过两周就说不清是哪一版。批量抓取时,中间一条 404 就整批中断。

DSH(DeepSeek Harness)的插件生态采用「一切皆插件」的理念,把这类琐碎工作收成一条命令。下面介绍的就是 dsh-web-snapshot,一个把网页转成干净 Markdown 的插件,支持单个 URL、批量文件和 sitemap。

是什么

dsh-web-snapshot 是一个 DSH 插件,由 feely0208 维护,归类为「联网工具」。它的核心价值是把网页 URL 转换成 Markdown 文件,其中包含标题、正文、来源、抓取时间、状态码等元数据,并过滤掉导航、广告等干扰元素。它不依赖浏览器渲染,纯 Node 内置 fetch,适合离线调试和流水线使用。

核心功能

插件提供四个主要能力:

url:抓单个页面

dsh-web-snapshot url <URL>

输出为一个 Markdown 文件,包含:

  • 标题(# 标题)
  • 正文内容
  • 来源(网站域名)
  • 抓取时间
  • HTTP 状态码

正文提取优先级为 <article> → <main> → 常见 content 容器 → <body>,同时过滤掉 script / style / nav / footer / aside / form 等干扰元素。支持的 Markdown 元素包括标题、段落、列表、链接、图片、引用、代码块、简单表格。相对链接和图片会自动转为绝对地址。

batch:批量抓取

dsh-web-snapshot batch --input <urls.txt> --out snapshots/

urls.txt 一行一个 URL,# 开头的行视为注释。插件逐条抓取,单条失败不会中断,最后汇总成功 / 失败数量和对应文件名。输出目录里已有同名文件时,会先备份为 .bak 再覆盖。

sitemap:从 sitemap 列表抓取

dsh-web-snapshot sitemap <sitemap.xml|URL> --limit 20
dsh-web-snapshot sitemap --input local-sitemap.xml

支持读取 urlset 或 sitemapindex,子 sitemap 会自动展开(最多 10 个)。--limit 限制列出条数,--out 写出 URL 列表文件。

安全与限制

  • 协议限制:只允许 http/https,拒绝 file: / ftp: / data:
  • 超时与大小:单次请求超时 10s,响应上限 5MB
  • 不执行 JavaScript:SPA 或需要登录的页面只能拿到初始 HTML
  • 不下载资源:图片只保留 Markdown 链接,不落地图片 / PDF / 附件
  • 不做 robots / ToS 判断:是否允许抓取由使用者自行确认并承担后果
  • 纯 Node 内置 fetch,不装额外依赖

安装与启用

通过 DSH 插件目录安装:

dsh plugin --profile web add @deepwhale-cn/dsh-web-snapshot

也可以直接通过 CLI 运行(无需安装):

npx @deepwhale-cn/dsh-web-snapshot --help

典型用法

以下命令展示了常见场景:

# 抓单个页面
dsh-web-snapshot url https://example.com/article

# 指定输出目录
dsh-web-snapshot url https://example.com/article --out snapshots/

# 指定输出文件名
dsh-web-snapshot url https://example.com/article --out page.md

# 批量抓取
dsh-web-snapshot batch --input urls.txt --out snapshots/

# 从 sitemap 抓取并限制条数
dsh-web-snapshot sitemap https://example.com/sitemap.xml --limit 20

# 本地 sitemap 文件
dsh-web-snapshot sitemap --input local-sitemap.xml

# 本地 demo 服务(不联网)
dsh-web-snapshot --demo

退出码:0 全部成功 · 1 有抓取失败 · 2 用法错误 / 非法 URL 或协议。

适用场景与注意

适合以下场景:

  • 需要把网页内容快速喂给模型
  • 需要为知识库准备带来源和时间的 Markdown 文档
  • 需要批量处理多个 URL,但不希望被单条失败中断
  • 需要从 sitemap 批量列出或抓取网页

注意:

  • 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证
  • 不执行 JavaScript,SPA 页面可能只抓到初始 HTML
  • 正文提取是启发式的,复杂页面可能漏内容或混入推荐位、评论
  • 不做 robots / ToS 判断,使用者需自行确认目标网站是否允许抓取

结尾

dsh-web-snapshot 把网页转 Markdown 的流程标准化了:一条命令搞定单个 / 批量 / sitemap 抓取,自带来源和时间戳,过滤干扰元素,支持离线调试。对于需要把网页内容输入模型或知识库的开发者来说,它把繁琐的复制、清洗、记录工作压缩成一条命令。

插件目录页:https://www.skillhub.cn/plugins/feely0208/dsh-web-snapshot
GitHub 仓库:https://github.com/feely0208/dsh-web-snapshot

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

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

Xiaoye