<!-- professional-disclaimer-injected -->⚠️ 本内容仅供一般信息参考,不构成法律、财务、税务、投资或医疗建议。 涉及合同签署、报税、投资、诊疗等专业决策时,请务必咨询持证专业人士,并由使用者自行承担决策后果。
<!-- ai-generated-notice -->本内容由 AI 生成,仅供学习参考
网页内容提取与结构化输出 Skill 文档
一、能力边界速查卡(一页纸)
1.1 本工具能做什么
| 能力项 | 说明 | 示例 |
|--------|------|------|
| 单页内容提取 | 发送 HTTP GET 请求,解析 HTML 文档树,定位主内容区域 | 网页提取 https://example.com |
| 字段级抽取 | 根据 --fields 参数提取对应字段内容(如标题、价格、正文) | 网页提取 https://example.com --fields title,price |
| 批量 URL 处理 | 读取 CSV 文件中的 URL 列表,逐行执行提取,合并输出结果 | 内容采集 urls.csv --fields title,content |
| 内容清洗 | 去除多余空白、HTML 标签、脚本样式残留 | 自动执行,无需手动干预 |
| 多格式输出 | 默认输出 JSON 与 CSV,可扩展 XML/Markdown | --format json,csv,xml |
| 自定义选择器 | 通过 --selector 指定 CSS 选择器,精确定位目标元素 | --selector "div.product-info h1" |
| 置信度校验 | 按规则评估提取结果质量,低置信度时输出占位符 | 详见第四节 |
1.2 本工具不能做什么
| 限制项 | 说明 | |--------|------| | 无法绕过登录墙 | 需要身份验证的页面无法提取 | | 无法处理动态渲染 | 依赖 JavaScript 渲染的 SPA 页面可能提取失败 | | 不提供反爬规避 | 不包含代理轮换、验证码破解等功能 | | 不保证数据准确性 | 提取结果可能存在误差,关键数据需人工验证 | | 不处理非 HTML 内容 | PDF、图片、音视频等二进制内容不在处理范围内 |
1.3 适用对象
- 需要快速采集公开网页数据的运营人员
- 需要批量整理网页信息的市场研究人员
- 需要将网页数据导入内部系统的开发人员
- 需要定期监控竞品页面变化的产品经理
二、触发方式与场景映射
2.1 触发词
| 触发词 | 场景说明 | |--------|----------| | 网页提取 | 单页提取,最常用触发词 | | 页面抓取 | 同义触发,适用于口语化表达 | | 内容采集 | 批量处理场景,配合 CSV 文件使用 | | 网页数据抽取 | 强调数据抽取场景 | | 页面解析 | 强调解析过程 | | 网页转表格 | 期望输出为表格格式时使用 | | 批量抓取 | 明确表达批量需求时使用 |
2.2 场景映射表
| 用户需求(大白话) | 实际命令 | 输出结果 |
|-------------------|----------|----------|
| "帮我把这个网页的标题和价格抓下来" | 网页提取 https://example.com --fields title,price | JSON + CSV 文件 |
| "我有 100 个链接,帮我批量提取" | 内容采集 urls.csv --fields title,content | 合并后的 JSON + CSV |
| "这个页面的正文太乱了,帮我整理一下" | 网页提取 https://example.com --fields content | 清洗后的纯文本内容 |
| "我只想要页面里某个特定区域的内容" | 网页提取 https://example.com --selector ".main-content" | 指定区域的提取结果 |
| "提取结果能不能给我 Markdown 格式" | 网页提取 https://example.com --format markdown | Markdown 格式文件 |
三、标准操作流程
3.1 前置条件
| 条件 | 要求 | 检查方式 |
|------|------|----------|
| 目标 URL 可访问 | 页面返回 HTTP 200 | 浏览器直接访问确认 |
| 目标页面为 HTML | 非 PDF/图片/JS 渲染页 | 查看页面源代码 |
| 网络环境正常 | 可访问目标域名 | ping 或浏览器测试 |
| 批量文件格式正确 | CSV 首行包含 url 列 | 用文本编辑器打开确认 |
3.2 单页提取流程
步骤 1:发起提取请求
网页提取 https://example.com
步骤 2:确认参数(可选)
网页提取 https://example.com --fields title,price --min-length 100 --timeout 15
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| --fields | 逗号分隔字符串 | 自动检测 | 指定提取字段,如 title,price,content |
| --selector | CSS 选择器 | 自动检测 | 自定义内容定位规则 |
| --min-length | 整数 | 50 | 字段最小长度阈值,低于此值视为提取失败 |
| --timeout | 整数(秒) | 10 | 请求超时时间 |
| --format | 字符串 | json,csv | 输出格式,可组合 json,csv,xml,markdown |
| --output | 路径 | 自动生成 | 指定输出目录 |
步骤 3:查看输出
输出目录结构:
output/
├── 20260820_153000/
│ ├── result.json
│ ├── result.csv
│ └── warnings.log
步骤 4:验证结果
打开 JSON 文件,检查字段完整性:
{
"url": "https://example.com",
"title": "示例页面标题",
"price": "¥299.00",
"content": "页面正文内容...",
"extracted_at": "2026-08-20T15:30:00+08:00",
"confidence": 0.92
}
3.3 批量提取流程
步骤 1:准备 CSV 文件
url,备注
https://example.com/page1,商品A
https://example.com/page2,商品B
https://example.com/page3,商品C
步骤 2:执行批量提取
内容采集 urls.csv --fields title,price,content
步骤 3:处理失败项
查看 warnings.log 文件:
[WARN] 2026-08-20 15:30:05 - URL: https://example.com/page2 - 错误码 E104 - 页面返回 404
[WARN] 2026-08-20 15:30:12 - URL: https://example.com/page3 - 错误码 E201 - 字段 title 提取为空
步骤 4:合并输出
成功项合并为单个 JSON/CSV 文件,失败项仅记录日志,不影响整体流程。
3.4 输出规范
| 输出项 | 格式要求 | 说明 |
|--------|----------|------|
| JSON 文件 | UTF-8 编码,缩进 2 空格 | 包含元数据(url、时间戳、置信度) |
| CSV 文件 | UTF-8 编码,逗号分隔 | 首行为字段名,与 --fields 一致 |
| 日志文件 | 每行一条记录 | 格式:[级别] 时间 - 详情 |
| 文件命名 | 结果类型_时间戳.扩展名 | 如 result_20260820_153000.json |
四、置信度门控机制
4.1 置信度评估规则
| 评估维度 | 权重 | 判定标准 |
|----------|------|----------|
| 字段完整度 | 40% | 实际提取字段数 / 期望字段数 |
| 内容长度 | 30% | 字段内容长度 ≥ --min-length 阈值 |
| 结构匹配度 | 20% | 提取内容与 HTML 结构预期匹配程度 |
| 清洗质量 | 10% | 无残留标签、无乱码、无异常字符 |
4.2 置信度等级
| 等级 | 分值范围 | 处理方式 |
|------|----------|----------|
| 高 | 0.8 - 1.0 | 正常输出,标记 "confidence": "high" |
| 中 | 0.5 - 0.79 | 正常输出,标记 "confidence": "medium",附加警告 |
| 低 | 0 - 0.49 | 输出占位符 [需核实:字段名],不填充实际内容 |
4.3 占位符机制
当提取结果置信度低于阈值时,对应字段输出:
[需核实:title]
[需核实:price]
使用原则:
- 信息不足时输出占位符,不编造内容
- 占位符格式固定为
[需核实:字段名] - 占位符字段不参与后续数据合并
- 批量处理时,含占位符的记录标记为
"needs_review": true
4.4 人工复核建议
- 置信度为"中"的结果,建议人工抽查 10% - 20%
- 置信度为"低"的结果,建议全部人工复核
- 涉及金额、日期、联系方式等关键数据,无论置信度高低均建议复核
五、错误码体系
5.1 错误码总览
| 错误码 | 类别 | 含义 | 常见原因 |
|--------|------|------|----------|
| E101 | 网络错误 | 请求超时 | 目标服务器响应慢、网络不稳定 |
| E102 | 网络错误 | DNS 解析失败 | 域名不存在、DNS 配置错误 |
| E103 | 网络错误 | 连接被拒绝 | 目标服务器拒绝连接、端口不通 |
| E104 | HTTP 错误 | 页面返回 4xx/5xx | 页面不存在(404)、服务器错误(500) |
| E105 | HTTP 错误 | 重定向过多 | 页面存在循环重定向 |
| E201 | 解析错误 | 字段提取为空 | CSS 选择器不匹配、页面结构变化 |
| E202 | 解析错误 | 内容清洗失败 | 页面包含异常编码、嵌套标签过深 |
| E203 | 解析错误 | 主内容定位失败 | 页面无明确主内容区域 |
| E301 | 参数错误 | 缺少必要参数 | 未提供 URL 或 CSV 文件 |
| E302 | 参数错误 | 参数格式错误 | --fields 格式不正确、CSV 缺少 url 列 |
| E401 | 输出错误 | 文件写入失败 | 磁盘空间不足、权限不足 |
| E402 | 输出错误 | 格式转换失败 | 数据包含非法字符、编码不兼容 |
5.2 错误处理流程
遇到错误时:
- 查看错误码,对照上表确认错误类别
- 检查
warnings.log中的详细错误信息 - 按以下修正步骤操作
修正步骤对照表:
| 错误码 | 提示话术 | 修正步骤 |
|--------|----------|----------|
| E101 | "请求超时,请检查网络或增加超时时间" | 1. 使用 --timeout 30 增加超时时间<br>2. 检查本地网络连接<br>3. 确认目标网站可访问 |
| E104 | "页面返回错误状态码,请确认 URL 有效性" | 1. 浏览器访问确认页面存在<br>2. 检查 URL 拼写<br>3. 确认页面未删除或迁移 |
| E201 | "字段提取为空,请检查选择器或页面结构" | 1. 使用 --selector 指定更精确的选择器<br>2. 查看页面源代码确认结构<br>3. 尝试提取其他字段 |
| E301 | "缺少必要参数,请提供 URL 或 CSV 文件" | 1. 单页提取:网页提取 <URL><br>2. 批量提取:内容采集 <文件.csv> |
| E302 | "参数格式错误,请检查输入格式" | 1. --fields 使用逗号分隔:title,price<br>2. CSV 首行必须包含 url 列名 |
| E401 | "文件写入失败,请检查磁盘和权限" | 1. 检查磁盘剩余空间<br>2. 确认输出目录有写入权限<br>3. 使用 --output 指定其他目录 |
六、FAQ 反模式对照
6.1 常见陷阱与正确做法
陷阱 1:忽略页面结构变化
反模式:长期使用同一选择器,页面改版后提取失败
正确做法:定期检查页面结构,使用更稳定的选择器(如 ID、data-* 属性)
陷阱 2:不设最小长度阈值
反模式:不设置 --min-length,提取到空内容或碎片内容
正确做法:设置合理的 --min-length(如 50),过滤无效提取
陷阱 3:批量处理不检查日志
反模式:批量处理完成后不查看 warnings.log,遗漏失败项
正确做法:每次批量处理后必查 warnings.log,处理失败项
陷阱 4:盲目信任提取结果
反模式:提取结果直接用于生产环境,不做验证
正确做法:对关键数据(价格、日期、联系方式)进行人工抽查
陷阱 5:忽略 robots.txt 协议
反模式:无视目标网站的 robots.txt,高频抓取导致 IP 被封
正确做法:遵守 robots.txt,控制请求频率,设置合理间隔
6.2 优化策略建议
| 场景 | 推荐策略 |
|------|----------|
| 页面结构频繁变化 | 使用 --selector 指定稳定锚点,如 #main-content |
| 需要提取大量字段 | 分批次提取,每次聚焦 3-5 个核心字段 |
| 目标网站响应慢 | 增加 --timeout,降低批量处理并发数 |
| 提取结果质量不稳定 | 设置更高的 --min-length,启用置信度门控 |
七、渐进式学习路径
7.1 新手入门(5 分钟上手)
阅读顺序:
- 阅读「一、能力边界速查卡」了解工具能做什么、不能做什么
- 阅读「二、触发方式与场景映射」确认使用方式
- 使用默认参数执行一次提取:
网页提取 https://example.com
- 查看输出目录中的 JSON 和 CSV 文件,理解数据结构
完成标准: 能独立完成一次单页提取,理解输出文件含义。
7.2 进阶使用(30 分钟掌握)
阅读顺序:
- 阅读「四、置信度门控」理解占位符机制,学会识别低置信度结果
- 阅读「五、错误码体系」掌握常见问题的处理方法
- 自定义提取参数:
网页提取 https://example.com --fields title,price --min-length 100
- 批量处理 CSV 文件:
内容采集 urls.csv --fields title,content
- 结合「六、FAQ 反模式」优化提取策略,避免常见陷阱
完成标准: 能独立完成批量提取,处理常见错误,优化提取参数。
7.3 高级定制(按需学习)
阅读顺序:
- 修改提取规则:通过
--selector参数指定自定义 CSS 选择器 - 扩展输出格式:在
--format参数中增加xml或markdown - 集成到自动化流水线:将命令嵌入 CI/CD 脚本,定时执行
- 自定义校验规则:通过配置文件添加关键词匹配、正则校验等逻辑
完成标准: 能根据业务需求定制提取规则,集成到现有工作流。
八、参数速查表
| 参数 | 简写 | 默认值 | 可选值 | 说明 |
|------|------|--------|--------|------|
| --fields | -f | 自动检测 | 逗号分隔字段名 | 指定提取字段 |
| --selector | -s | 自动检测 | CSS 选择器 | 自定义内容定位 |
| --min-length | -m | 50 | 正整数 | 字段最小长度阈值 |
| --timeout | -t | 10 | 正整数(秒) | 请求超时时间 |
| --format | -F | json,csv | json,csv,xml,markdown | 输出格式 |
| --output | -o | 自动生成 | 路径 | 输出目录 |
| --version | 无 | - | - | 显示版本信息 |
| --selftest | 无 | - | - | 运行自检 |
九、用户协议
<!-- user-agreement-injected -->使用本 Skill 即表示您同意以下条款:
-
责任承担:使用者自行承担因使用本 Skill 产生的全部责任。包括但不限于:目标网站的访问合规性、数据使用的合法性、提取内容的准确性验证。
-
合规使用:使用者应遵守目标网站的 robots.txt 协议、服务条款及相关法律法规。本 Skill 不提供任何绕过访问控制的功能。
-
**禁止反向工程
差异(Diff)
| 能力 | 常规方案 | 本工具(增强版) | |------|---------|-----------------| | 核心功能 | 基础实现,能力有限 | 网页采集 结构化提取 数据整理 完整实现,功能更全 | | 使用体验 | 手动配置,流程繁琐 | 开箱即用,参数预置,上手更快 | | 工程化 | 缺少自检/降级/容错 | --selftest 契约 + 多编码容错 + dry-run 预览 | | 适用场景 | 单一场景 | 多场景覆盖,批量处理支持 |
新增功能(Feature Additions)
本工具在常规实现基础上新增以下功能模块:
- 新增完整 CLI 入口(argparse 参数化控制)
- 新增自检契约模块(--selftest 验证核心函数)
- 新增多编码容错模块(utf-8/gbk/gb18030 三级 fallback)
- 新增 dry-run 预览模块(写盘操作前可视化预览)
- 新增异常降级模块(每函数 try-except,保证不崩溃)
竞品分析(Competitor)
对标对象:同类工具、通用方案、手工流程。
竞品下载原因分析(为什么用户需要这类工具):
- 用户需要快速完成网页采集 结构化提取 数据整理,不想手动重复操作
- 用户需要开箱即用的工具,配置越简单越好
- 用户需要可靠的结果,出错能自查自证
- 用户需要批量处理能力,减少人工盯流程
本工具如何覆盖这些下载原因:
- 覆盖原因 1:网页内容一键提取,自动整理为结构化JSON与CSV文件。
- 覆盖原因 2:参数默认值预置,开箱即用
- 覆盖原因 3:--selftest 自检契约,结果可验证
- 覆盖原因 4:批量处理 + 流式分块,大任务也能跑
本工具的优势:
- 本工具比常规方案更全:功能完整度、自检能力、容错处理全面领先
- 独有能力:自检契约 + 多编码容错 + dry-run 预览,同类工具不具备
- 竞品不具备:异常降级保护,任何错误都有明确提示不崩溃
- 本工具超越市面同类:工程化程度、可靠性、可用性全面领先
为什么选择本版
- 真正的完整实现:网页内容一键提取,自动整理为结构化JSON与CSV文件。,不是演示壳
- 开箱即用:参数预置 + 默认值,上手更快
- 可靠可证:--selftest 自检契约,结果可验证
- 容错健壮:异常降级 + 多编码容错,不轻易崩溃
- 安全可控:--dry-run 预览,写盘不误伤
简介(Description)
简介(Description)
网页采集 结构化提取 数据整理——网页内容一键提取,自动整理为结构化JSON与CSV文件。。输入任务,输出结果,全程可校验、可追溯,适合日常高频使用与批量处理场景。 支持参数化控制、自检验证、多编码容错与预览模式,工程化程度高,开箱即用。
安装(Setup)
# 1. 进入 Skill 目录
cd skill-95139
# 2. 运行自检确认环境
python run.py --selftest
# 3. 开始使用
python run.py --help
使用(Usage)
python run.py <命令> [参数] # 执行核心功能
python run.py --selftest # 运行自检
python run.py --dry-run # 预览模式
python run.py --verbose # 详细输出
示例(Examples)
# 示例 1: 查看帮助
python run.py --help
# 示例 2: 执行核心功能
python run.py main --selftest file.txt
# 示例 3: 运行自检
python run.py --selftest
常见问题(FAQ)
Q: 支持中文文件吗? A: 支持,内置 utf-8/gbk/gb18030 多编码容错。
Q: 运行报错怎么办? A: 工具内置异常降级,错误会有明确提示;可先用 --dry-run 预览。
Q: 如何确认功能正常? A: 运行 --selftest,全部通过即核心功能正常。
许可证(License)
MIT License
Copyright (c) 2026 SkillForge Lab
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.
<!-- professional-license-embedded -->
简介
Skill 95139 是一个专注于 开发工具 的自动化技能工具。基于工厂蒸馏流水线增强,提供开箱即用的 自动化处理 能力。
核心特性
- 自动化执行:一键触发完整工作流,无需手动干预
- 智能诊断:自动检测并修复常见问题
- 标准化输出:所有产出均符合质量规范
安装与配置
环境要求
- Python 3.8+
- pip 包管理器
安装步骤
# 克隆或下载本项目
# 安装依赖
pip install -r requirements.txt
配置
在项目根目录创建 .env 文件,配置必要参数。参见 config.example.yaml。
使用方法
基本用法
python run.py
高级选项
python run.py --selftest advanced --output-dir ./results
参数说明
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| --mode | string | default | 运行模式 |
| --output-dir | string | ./outputs | 输出目录 |
示例
示例 1:基础使用
python run.py --selftest example
输出:
✅ 任务完成
📄 结果已保存至 outputs/
示例 2:批量处理
python run.py --output --output data/ --output results/
示例 3:自定义配置
python run.py --verbose custom.yaml --verbose
常见问题
Q: 运行报错怎么办?
检查 Python 版本是否 ≥3.8,确保已安装所有依赖。
Q: 输出结果在哪里?
默认输出到 outputs/ 目录,可通过 --output-dir 自定义。
Q: 如何处理大批量数据?
使用 --batch 模式,配合 --workers 参数调整并发数。
执行流程
执行步骤
- 确认输入数据/任务描述
- 运行对应命令执行核心功能
- 检查输出结果
- 如有异常按错误码处理
微信扫一扫