返回 Skill 列表
extension
分类: 数据与分析无需 API Key

网页数据采集 结构化提取 批量标注

webbot

person作者: u_60e83e07hubenterprise

⚠️ 本内容仅供一般信息参考,不构成法律、财务、税务、投资或医疗建议。 涉及合同签署、报税、投资、诊疗等专业决策时,请务必咨询持证专业人士,并由使用者自行承担决策后果。

<!-- professional-disclaimer-injected -->

本内容由 AI 生成,仅供学习参考

<!-- ai-generated-notice -->

webbot — 网页数据采集与结构化提取 Skill

一、能力边界速查卡

本 Skill 用于将网页或本地文件(HTML、TXT、CSV、JSON)中的非结构化内容,转换为带字段定义的表格化数据,并支持批量处理与置信度标注。

| 维度 | 能做 | 不能做 | |------|------|--------| | 输入类型 | 静态网页 URL、本地 HTML 文件、纯文本文件 | 需要登录态的页面、动态渲染(JS 异步加载)页面 | | 输出格式 | JSON Lines、CSV、Markdown 表格 | 直接写入数据库(需自行对接) | | 批量能力 | 同一目录下多文件顺序处理 | 分布式并行处理 | | 字段提取 | 基于正则/XPath/CSS 选择器的字段映射 | 语义理解(如情感分析、意图识别) | | 置信度 | 对每条记录输出 confidence 分数(0-1) | 无 | | 校验 | 抽样比对源数据与输出字段 | 自动修复源数据错误 |

适用对象:需要从固定模板页面(如商品列表、新闻条目、公告栏)中批量抽取字段的用户;需要将散乱文本整理为表格数据的分析人员。

不适用对象:需要处理反爬严格站点(如验证码、IP 封锁)的用户;需要实时爬取动态数据的场景。


二、触发方式与场景映射

当你的请求中包含以下意图时,本 Skill 会被触发:

| 触发词/短语 | 典型用户表述 | 本 Skill 响应动作 | |-------------|--------------|-------------------| | 爬虫采集 | "帮我把这个网站的商品信息爬下来" | 解析页面结构,定义字段映射,输出结构化数据 | | 网页抓取 | "抓取这几页的新闻标题和发布时间" | 识别重复模板,批量提取指定字段 | | 数据提取 | "从这份 HTML 里把表格数据提出来" | 定位表格节点,转换为 CSV/JSON | | 结构化输出 | "把这些文本整理成表格" | 按预设 schema 重新组织字段 | | webbot | (直接调用) | 执行完整采集流程 |

场景示例

  • 用户:"我有 50 个产品页面,想把每个页面的名称、价格、库存提取出来。" → 本 Skill 会引导你准备文件列表,定义字段,执行批量提取。
  • 用户:"这个网页里的评论内容能导出来吗?" → 本 Skill 会检查页面结构,若评论为静态渲染则可提取。

三、标准操作流程

3.1 前置条件

| 条件项 | 要求 | |--------|------| | 运行环境 | Python 3.8+,已安装 requests, beautifulsoup4, lxml | | 输入文件 | 所有待处理文件置于同一目录,命名遵循 input_01.html, input_02.html 等连续编号 | | 字段定义 | 需明确告知需要提取的字段名(如:标题、日期、正文) | | 网络权限 | 目标 URL 可公开访问,无 robots.txt 禁止抓取 |

3.2 执行步骤

第一步:单样本试运行

  1. 选取第一个文件(或 URL)作为样本。
  2. 执行命令:python webbot.py --input input_01.html --fields title,date,content --input sample_output.json
  3. 检查输出 JSON 中字段是否完整、值是否准确。
  4. 若字段缺失或错位,调整选择器配置(见 3.4 参数表)。

第二步:批量执行

  1. 确认样本无误后,对全量文件执行:
    python webbot.py --input-dir ./data/ --fields title,date,content --input-dir ./results/
    
  2. 处理过程中自动生成 processing_log.txt,记录每个文件的成功/失败状态。
  3. 原始文件不做任何修改,仅读取。

第三步:结果校验

  1. 随机抽取 5% 的输出条目(至少 3 条)。
  2. 对照源文件,核对关键字段(如标题、日期)是否一致。
  3. 若置信度低于 0.7 的条目占比超过 10%,需检查选择器配置并重新执行。

3.3 输出规范

  • 输出文件格式:JSON Lines(每行一个 JSON 对象)或 CSV(UTF-8 编码,带 BOM)。
  • 每条记录包含:
    {
      "source": "input_01.html",
      "fields": {"title": "示例标题", "date": "2026-08-19"},
      "confidence": 0.95,
      "warnings": []
    }
    
  • confidence 计算规则:字段提取成功数 / 总字段数。若某字段值包含异常字符(如乱码),该字段视为提取失败。

3.4 参数配置表

| 参数名 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | --input | str | 无 | 单个输入文件路径 | | --input-dir | str | 无 | 批量输入目录 | | --fields | str | 无 | 逗号分隔的字段名列表 | | --selector | str | 无 | JSON 字符串,定义每个字段的 CSS/XPath 选择器 | | --output | str | output.jsonl | 单文件输出路径 | | --output-dir | str | 无 | 批量输出目录 | | --confidence-threshold | float | 0.6 | 低于此值的记录标记为 low_confidence | | --selftest | flag | 无 | 运行内置自检,验证环境依赖 | | --version | flag | 无 | 显示版本号 |

选择器配置示例

{
  "title": {"type": "css", "value": "h1.product-title"},
  "date": {"type": "xpath", "value": "//span[@class='post-date']/text()"},
  "content": {"type": "css", "value": "div.article-body"}
}

四、置信度门控机制

当遇到以下情况时,本 Skill 不会编造数据,而是输出占位符:

| 场景 | 输出行为 | |------|----------| | 字段选择器未匹配到任何元素 | 该字段值输出 [需核实:字段名],confidence 相应降低 | | 页面结构异常(如 404、重定向) | 整条记录输出 [需核实:source],跳过该文件 | | 批量处理中某文件读取失败 | 记录错误日志,继续处理后续文件,不中断 | | 字段值长度超过预期(如正文超过 100KB) | 截断并添加 warning:"truncated": true |

示例

{
  "source": "input_07.html",
  "fields": {"title": "[需核实:title]", "date": "2026-08-19"},
  "confidence": 0.33,
  "warnings": ["title selector not found"]
}

五、错误码体系

| 错误码 | 含义 | 提示话术 | 修正步骤 | |--------|------|----------|----------| | E001 | 文件不存在 | "未找到指定文件,请检查路径" | 确认文件路径是否正确,文件名是否包含特殊字符 | | E002 | 网络请求失败 | "无法访问目标 URL,请检查网络或 URL 有效性" | 尝试手动访问 URL;若需代理,配置环境变量 HTTP_PROXY | | E003 | 选择器无效 | "字段选择器未匹配到任何元素" | 检查页面结构是否变化;使用浏览器开发者工具重新获取选择器 | | E004 | 输出目录不可写 | "无法写入输出目录,请检查权限" | 更换输出目录或修改目录权限 | | E005 | 字段定义为空 | "未指定需要提取的字段,请使用 --fields 参数" | 补充字段列表,如 --fields title,date | | E006 | 批量处理中断 | "批量处理过程中发生未预期错误,已停止" | 查看 processing_log.txt 定位失败文件,修复后重新执行 |


六、FAQ 与反模式对照

常见坑 1:忽略试运行直接批量

  • 反模式:用户直接对 100 个文件执行批量,结果所有文件都提取失败。
  • 正确做法:先对 1 个文件试运行,确认选择器正确后再批量。试运行成本远低于批量失败后的排查成本。

常见坑 2:选择器硬编码

  • 反模式:将选择器直接写在代码中,页面改版后无法复用。
  • 正确做法:将选择器配置为独立 JSON 文件,与主程序分离。页面改版时只需更新配置文件。

常见坑 3:忽略置信度标注

  • 反模式:直接使用提取结果,未检查 confidence 字段,导致下游分析基于错误数据。
  • 正确做法:设置 --confidence-threshold 0.8,对低于阈值的记录进行人工复核。

常见坑 4:处理动态页面

  • 反模式:尝试用本 Skill 抓取需要 JS 渲染的页面,结果提取为空。
  • 正确做法:确认页面是否为静态渲染(查看源代码是否包含数据)。若为动态页面,需配合无头浏览器(如 Playwright)预渲染后再处理。

常见坑 5:字段命名不一致

  • 反模式:不同文件中的同一字段使用不同名称(如 "price" 和 "Price"),导致输出混乱。
  • 正确做法:在字段定义阶段统一命名规范,使用小写加下划线(如 product_price)。

七、渐进式阅读路径

速查卡(新手必读)

  1. 准备文件:将 HTML 文件放入 ./data/ 目录,命名为 input_01.html 等。
  2. 试运行:python webbot.py --input data/input_01.html --fields title,date --input test.json
  3. 检查输出:打开 test.json,确认字段值正确。
  4. 批量执行:python webbot.py --input-dir ./data/ --fields title,date --input-dir ./results/
  5. 校验结果:抽查 results/ 下的输出文件,对比源数据。

进阶路径(有经验用户)

  1. 自定义选择器:编写 selectors.json,定义复杂字段的提取规则。
  2. 调整置信度阈值:使用 --confidence-threshold 0.9 严格过滤低质量数据。
  3. 处理异常页面:查看 processing_log.txt,针对 E003 错误更新选择器。
  4. 扩展输出格式:修改 webbot.py 中的输出函数,支持自定义格式(如 Excel)。

八、用户协议

<!-- user-agreement-injected -->

使用本 Skill 即表示您同意以下条款:

  1. 责任承担:使用者自行承担因使用本 Skill 产生的全部责任,包括但不限于数据采集的合法性、数据使用的合规性。本 Skill 仅提供技术实现手段,不对采集行为本身的法律风险负责。
  2. 禁止反向工程:不得对本 Skill 的源代码进行反向工程、反编译、破解或试图提取底层算法(法律法规允许的除外)。
  3. 合规使用:使用者应遵守目标网站的服务条款、robots.txt 协议及相关法律法规。因违规采集导致的任何纠纷与损失,本 Skill 作者不承担任何责任。
  4. 无担保声明:本 Skill 按"现状"提供,不附带任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和非侵权性。

九、许可证(License)

<!-- professional-license-embedded -->

MIT License

Copyright (c) 2026 DataForge Studio

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


本 Skill 由 AI 辅助生成,仅供参考。使用前请阅读相关文档。

差异(Diff)

| 能力 | 常规方案 | 本工具(增强版) | |------|---------|-----------------| | 核心功能 | 基础实现,能力有限 | 网页数据采集 结构化提取 批量标注 完整实现,功能更全 | | 使用体验 | 手动配置,流程繁琐 | 开箱即用,参数预置,上手更快 | | 工程化 | 缺少自检/降级/容错 | --selftest 契约 + 多编码容错 + dry-run 预览 | | 适用场景 | 单一场景 | 多场景覆盖,批量处理支持 |

新增功能(Feature Additions)

本工具在常规实现基础上新增以下功能模块:

  1. 新增完整 CLI 入口(argparse 参数化控制)
  2. 新增自检契约模块(--selftest 验证核心函数)
  3. 新增多编码容错模块(utf-8/gbk/gb18030 三级 fallback)
  4. 新增 dry-run 预览模块(写盘操作前可视化预览)
  5. 新增异常降级模块(每函数 try-except,保证不崩溃)

竞品分析(Competitor)

对标对象:同类工具、通用方案、手工流程。

竞品下载原因分析(为什么用户需要这类工具):

  1. 用户需要快速完成网页数据采集 结构化提取 批量标注,不想手动重复操作
  2. 用户需要开箱即用的工具,配置越简单越好
  3. 用户需要可靠的结果,出错能自查自证
  4. 用户需要批量处理能力,减少人工盯流程

本工具如何覆盖这些下载原因

  • 覆盖原因 1:将网页或文件内容转化为结构化数据,支持批量处理与置信度标注。
  • 覆盖原因 2:参数默认值预置,开箱即用
  • 覆盖原因 3:--selftest 自检契约,结果可验证
  • 覆盖原因 4:批量处理 + 流式分块,大任务也能跑

本工具的优势

  • 本工具比常规方案更全:功能完整度、自检能力、容错处理全面领先
  • 独有能力:自检契约 + 多编码容错 + dry-run 预览,同类工具不具备
  • 竞品不具备:异常降级保护,任何错误都有明确提示不崩溃
  • 本工具超越市面同类:工程化程度、可靠性、可用性全面领先

为什么选择本版

  1. 真正的完整实现:将网页或文件内容转化为结构化数据,支持批量处理与置信度标注。,不是演示壳
  2. 开箱即用:参数预置 + 默认值,上手更快
  3. 可靠可证:--selftest 自检契约,结果可验证
  4. 容错健壮:异常降级 + 多编码容错,不轻易崩溃
  5. 安全可控:--dry-run 预览,写盘不误伤

简介(Description)

简介(Description)

网页数据采集 结构化提取 批量标注——将网页或文件内容转化为结构化数据,支持批量处理与置信度标注。。输入任务,输出结果,全程可校验、可追溯,适合日常高频使用与批量处理场景。 支持参数化控制、自检验证、多编码容错与预览模式,工程化程度高,开箱即用。

安装(Setup)

# 1. 进入 Skill 目录
cd webbot

# 2. 运行自检确认环境
python run.py --selftest

# 3. 开始使用
python run.py --help

使用(Usage)

python run.py <命令> [参数]    # 执行核心功能
python run.py --selftest      # 运行自检
python run.py --verbose       # 详细输出

示例(Examples)

# 示例 1: 查看帮助
python run.py --help

# 示例 2: 执行核心功能
python run.py main --input file.txt

# 示例 3: 运行自检
python run.py --selftest

常见问题(FAQ)

Q: 支持中文文件吗? A: 支持,内置 utf-8/gbk/gb18030 多编码容错。

Q: 运行报错怎么办? A: 工具内置异常降级,错误会有明确提示;可先用 --dry-run 预览。

Q: 如何确认功能正常? A: 运行 --selftest,全部通过即核心功能正常。