如何使用 Scrapeless 爬取网站文本以进行 LLM 训练
Advanced Data Extraction Specialist
TL;DR:
- LLM准备好的网页文本是数据产品,而不是一堆复制的页面。 可靠的管道控制范围,保留源网址,消除导航噪音,规范文本,去除重复内容,并在存储之前验证每条记录。
- 从模型任务开始。 检索增强生成需要可以刷新源链接块;微调需要经过仔细审查的示例;预训练需要更广泛的治理和质量程序。
- 使用双路径获取设计。 通过HTTP获取简单的公共页面,然后通过托管的获取层(如Scrapeless Web Unlocker)路由需要JavaScript或访问处理的页面。
- 分开存储原始和处理后的表示。 原始响应支持审计和重新处理。干净的Markdown或文本支持分块、搜索和模型摄取。
- 在记录级别测量质量。 拒绝空页面、重复模板、意外语言、稀薄提取和没有来源的记录,避免其进入LLM数据集。
什么是“抓取网站文本以进行LLM训练”?
抓取网站文本以进行LLM工作意味着将经批准的公共页面转换为可追踪的机器可读记录。有用的结果不是原始HTML,而是一个数据集,其中每个文本单元都有一个源网址、捕获时间、内容类型、语言和处理历史。
这种区别很重要,因为网页将文章复制与菜单、cookie横幅、相关链接、重复的页脚和应用状态混合在一起。将所有可见文本发送给模型会产生噪音上下文,使后期更正变得困难。生产管道必须分离获取、提取、规范化、质量控制和存储。
网络访问层也必须尊重出版商规则和适用法律。机器人排除协议 定义了爬虫如何在 robots.txt 中发现规则;它并不替代条款、隐私义务或权限检查。
在抓取之前选择数据集用途
同一页面应该根据其目的进行不同的处理。
| 模型使用 | 最佳单元 | 需要的元数据 | 刷新模式 | 主要质量风险 |
|---|---|---|---|---|
| RAG或搜索 | 源链接段落 | URL、标题、标题路径、捕获时间 | 增量 | 过时或没有上下文的块 |
| 微调 | 已审查的输入输出示例 | 来源、许可或权限依据、审查者、版本 | 策划版本 | 标签不准确或未批准的重用 |
| 评估 | 冻结的提示和参考集 | 数据集版本、预期结果、评分规则 | 控制 | 渗漏到训练数据中 |
| 预训练 | 文档或更大语料单位 | 来源、语言、政策决策、去重关键 | 大型受管快照 | 权利、重复和低质量文本 |
对于RAG,新鲜度和来源通常比收集每个页面更重要。对于微调,较小的已审查集通常比大型未过滤的抓取更有用。评估数据应与训练输入隔离。预训练需要专业的法律、安全和数据治理审查,然后才能开始获取。
LLM文本管道一瞥
使用明确的序列,在每个边界处生成持久的工件:
- 定义允许的域、路径、语言和页面类型。
- 从网站地图和批准的导航中发现规范URL。
- 通过返回所需内容的最轻方法获取每个页面。
- 提取主要文档,同时保留标题、列表和表格。
- 规范空白、URL、Unicode和样板决策。
- 去除页面和重复内容区域的重复。
- 将文档拆分为源链接块以满足目标模型任务。
- 验证模式、来源、语言、内容密度和政策状态。
- 单独存储原始捕获、清洁文档和处理元数据。
这种架构使团队能够改进提取或分块,而无需重新抓取源。它还为任何模型响应创建了从页面到提供其上下文的处理版本的审计路径。
第一步:定义范围和访问规则
将范围写为数据,而不是非正式的便条。有效的抓取政策包括允许的主机、允许的路径前缀、拒绝的路径、最大深度、接受的媒体类型、语言规则和每个主机的请求预算。记录谁批准了源以及允许什么使用。
不要将链接视为自动权限以收集其背后所有内容。除非项目有文档依据和适当的控制措施,否则应保持只可账户区域、个人数据、付费内容和受限端点超出范围。决不要尝试规避技术访问控制。
HTTP 状态码、重定向、缓存指令和表示元数据应根据 HTTP 语义规范 进行解释。这可以防止错误页面、登录重定向和不受支持的文件被错误标记为成功的文本文件。
第 2 步:发现网址而不失去边界
网站地图通常是最干净的起点,因为它们暴露规范内容网址而不强制爬虫遍历每个导航变体。为网站地图中缺失的部分添加批准的种子页面,然后在调度之前对每个候选者进行规范化。
规范化应去除片段、解析相对网址、标准化主机大小写,并为跟踪参数应用项目规则。保留更改内容的参数;仅删除项目已分类为非内容变体的参数。
使用两个去重键:
- 规范化网址键可防止同一路由被重复调度。
- 内容指纹可捕获在不同网址下发布的相同或近似相同的页面。
发现和获取应分为两个队列。这使在获取内容之前检查计划范围成为可能,并能防止跨日历、分面搜索页面或无界分页的意外扩展。
第 3 步:使用正确的呈现路径获取页面
当所需的文章文本出现在返回的 HTML 中时,直接的 HTTP 响应就足够了。这种操作更便宜,调试也更简单。当客户端 JavaScript 构建内容、需要扩展导航或合法的公共响应需要管理访问处理时,则需要浏览器或呈现路径。
Scrapeless Web Unlocker 为需要 JavaScript 渲染或访问管理的公共页面提供获取层。保持获取合同狭窄:提交一个经过批准的网址,要求 HTML 作为期望结果,并在提取之前验证最终网址、状态和媒体类型。
默认情况下,不要将每个页面都通过浏览器发送。首先检查每个模板的代表性 URL。通过 HTTP 路由静态模板,通过呈现路由动态模板。这使管道易于理解,并为每个模板提供明确的获取规则。
Web Unlocker 介绍 记录了服务边界。想要更详细了解静态解析和浏览器执行,请阅读 JavaScript 抓取指南。
使用 Scrapeless 开始抓取
利用 Scrapeless 强化您的网络抓取和自动化工作流!
今天注册并获得 $5 的免费信用 — 无需信用卡。立即在 Scrapeless Dashboard 领取您的免费信用。
第 4 步:提取主要文档
主要内容提取应保留文档结构,同时去除网站边框。保持标题的顺序,将列表项附加到它们的部分,保留有意义的表格行,并在对句子有贡献时保留链接文本。去掉导航、重复的推广面板、Cookie 控件和不相关的建议。
由 DOM 标准 描述的浏览器文档模型提供了一棵树,但该树不会自动识别主文章。提取仍然需要模板规则、语义元素或经过测试的内容提取器。
以两种视图检查结果:
- 结构视图: 标题、段落、列表、表格和代码按预期顺序出现。
- 阅读视图: 一个人可以在不看到原始布局的情况下理解文档。
为每个模板保留一份简短的提取报告。报告应命名所选根节点、已删除区域、最小可接受文本长度和必须存在的字段。
第 5 步:规范化而不 erase 意义
规范化应使等效文本一致,同时保留事实。转换行结束符、规范化 Unicode、折叠布局空白,并标准化 Markdown 表示。保持标点符号、单位、否定、代码格式和部分边界完好无损。
第6步:在分块之前进行去重
精确去重可删除相同的文档。近重复检测可捕捉打印页面、区域镜像和仅更改少量块的模板。应跨多个页面进行样板分析,以安全地识别重复的导航和页脚文本。
在分块之前进行去重。否则,同一段落可能会收到多个块 ID,并且主导检索结果。保留从已删除重复项到保留的规范记录的映射,以便分析人员可以解释为什么某个 URL 没有生成新文档。
第7步:为了检索而进行分块,而非便利
块应遵循语义边界,例如标题部分、列表组或表单元。固定字符窗口可以将定义与条件分开,并将值与列标签分开。每个块都应保留标题路径和源 URL。
仅在评估表明边界上下文正在丢失时使用重叠。较大的重叠会增加存储,并可能导致检索器返回同一段落的多个副本。使用应用程序中的真实问题测试分块,而不仅仅是标记计数统计。
第8步:验证每个输出记录
验证应在存储之前和模型摄取之前进行。当以下情况出现时,拒绝或隔离记录:
- 最终 URL 超出批准范围;
- 响应不是预期的文本表示;
- 提取为空、不寻常地稀薄或大多为导航;
- 语言与声明的数据集语言不符;
- 文档缺乏源 URL 或捕获时间;
- 内容哈希在没有经过批准的版本更改情况下已存在;
- 页面包含需要审查的限制或政策状态。
NIST AI 风险管理框架 提供了一个有用的治理词汇,用于映射、测量和管理围绕 AI 系统的风险。将这些理念应用于源审批、数据集文档、评估和变更控制,而不是将抓取视为孤立的工程步骤。
单独存储原始、清洁和索引数据
保持三层结构:
- 原始捕获: 响应体、审计所需的头部、最终 URL 和时间戳。
- 清洁文档: 标准化的 Markdown 或文本加提取元数据。
- 应用程序索引: 块、嵌入、检索字段和索引版本。
提取更新应从保留的原始捕获重建第二层和第三层。分块更新应仅重建索引。这种分离在引用错误或模板更改时缩短调查时间。
结论:在数量之前建立可追溯性
一个 LLM 文本管道在每个干净的段落都可以追溯到一个经批准的源且可以从已知捕获中再现时成功。先从一小组页面模板开始,验证获取路径,审查提取的文档,并在增加抓取量之前建立记录级质量门。
最有用的第一个里程碑不是一个大语料库。它是一个小数据集,范围、来源、变换和失败规则足够清晰,以便另一位工程师进行审计。
建立一个源关联的网络文本管道
比较 Scrapeless 定价,探索 Web Unlocker,或加入 Scrapeless Discord 社区 和 Telegram 社区。
常见问题
问:原始 HTML 适合 LLM 训练吗?
原始 HTML 作为审计和再处理的工件是有用的,但它通常包含不应不变地进入模型输入的导航、脚本、重复模板和布局标记。创建一个单独的清洁表示,并保留与原始捕获的链接。
问:每个网站都应该在浏览器中呈现吗?
不。如果所需文本在响应中存在,请直接使用 HTTP 获取。仅对需要 JavaScript 或交互以公开已批准公共内容的模板添加浏览器呈现。
问:什么格式对于 LLM 准备的文本效果最好?
当标题、列表、表格和代码结构很重要时,Markdown 是有用的。JSONL 作为文件或块加元数据的容器是有用的。模式和来源字段比文件扩展名更重要。
问:应如何处理重复网页?
使用标准化的 URL 进行调度,使用内容哈希处理完全重复的内容,并对镜像或模板变体使用经过测试的近重复方法。保留一份记录,将排除的重复内容映射到保留的文档。
问:网页文本数据集应该多久刷新一次?
根据源的波动性和应用需求设置刷新规则。产品文档可能需要频繁检查,而归档参考资料可能很少更改。存储捕获时间戳并比较内容哈希,以便不变的页面不会创建新版本。
问:抓取的文本可以用于任何模型项目吗?
不。访问、版权、隐私、合同和数据保护要求依赖于来源、管辖权和预期用途。获取适当的审查,并将受限或个人数据保持在管道之外,除非项目有文件记录的合法依据和控制措施。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



