数据提取是什么?
Scrapeless抓取API返回结构化公共网络数据,而Scrapeless Universal抓取API提供自定义提取管道的页面内容。
TL;DR
- 数据提取从一个源读取选定的信息。 源可以是数据库、文件、API、文档、图像、日志或网页。
- 提取只是数据管道的第一部分。 清理、转换、验证和加载在收集了所需值之后进行。
- 模式使提取可测试。 字段名称、类型、所需值、来源和错误规则定义了有效记录的样子。
- 网络抓取是一种数据提取形式。 它关注公共网络源,通常结合检索、HTML解析和选择器逻辑。
数据提取是从一个或多个源读取选定值并以另一系统可以使用的形式表示它们的过程。提取可以复制结构化数据库行、解析JSON中的字段、识别文档中的值,或者将网络内容转换为记录。
数据提取是如何工作的?
数据提取从源合同开始,到符合目标模式的记录结束。
- 识别源。 定义包含所需数据的数据库、API、文件、文档或页面。
- 定义字段。 指定名称、类型、所需值、单位和可接受的缺失数据。
- 读取源。 使用查询、解析器、API客户端、文档模型或浏览器访问相关内容。
- 映射源值。 将源特定位置转换为稳定的字段名称并保留来源。
- 验证记录。 在加载之前检查所需字段、类型、范围、关系和重复键。
熟悉的提取-转换-加载模型使边界清晰: ETL开始于从原始源读取数据,然后将其转换并加载到另一个系统。对于网络源,提取通常在
HTML解析算法 创建可查询文档树之后开始。基于API的提取遵循由 HTTP语义规范 定义的请求和表示模型。.
可以提取什么类型的数据?
数据提取可以处理结构化、半结构化和非结构化源。
| 源类型 | 示例 | 典型方法 |
|---|---|---|
| 结构化 | 关系表、电子表格 | SQL查询、列映射 |
| 半结构化 | JSON、XML、HTML、日志 | 解析器、路径、选择器 |
| 非结构化 | PDF、图像、自由文本、音频 | 布局分析、OCR、文本或媒体处理 |
| 流式数据 | 事件、遥测、消息队列 | 消费者,过滤器,模式验证 |
常见数据提取方法
提取方法从直接查询到模型辅助的文档处理不等。
数据库查询
从使用过滤器和连接的结构系统中选择已知的列和行。
API检索
调用文档化的端点并将定义的响应映射到目标架构。
文件和文档解析
读取CSV、JSON、XML、HTML或文档结构并选择所需的字段。
识别与分类
检测源中的文本、标签、实体或表格区域,而这些源并未暴露现成的字段。
数据提取与数据转换
提取从源中读取值;转换更改这些值或它们的结构。
从页面复制价格字符串是提取。去掉货币符号,将值转换为小数,标准化货币或聚合每日价格是转换。保持该边界可见使缺陷更容易定位。
哪些因素使提取的数据值得信赖?
值得信赖的提取数据可以追溯到其来源,经过模式验证,并监测漂移。
- 保留来源。 在适当时与记录一起存储源标识符、收集时间和提取规则。
- 验证类型和含义。 一个值可以解析为数字,仍然代表错误的单位或上下文。
- 衡量完整性。 跟踪缺失的必要字段、重复的键和意外的记录计数。
- 最小化收集。 仅提取为声明的目的所需的字段,并应用保留控制。
如何定义提取合同?
提取合同描述源预期提供的内容和管道承诺产生的内容。它应命名源系统、访问方法、模式、刷新预期、所有权和使记录有效的条件。这将提取从一次性脚本转变为下游用户可以依赖的接口。
每个字段需要源定义和目标定义。源定义识别数据库列、JSON路径、文档区域、DOM选择器或响应属性。目标定义说明输出名称、类型、可空性、单位和标准化规则。如果源在页面类型或区域之间的含义变化,合同应表示该变异而不是在转换代码中隐藏它。
合同还描述失败。缺失的可选字段与不可读的源、支持的页面类型或需要验证的字段不同。不同的状态允许下游系统决定是接受部分记录、隔离以待审查,还是停止加载。
完整提取与增量提取
完整提取从源中读取完整的批准数据集。它容易推理并对初始加载或小源有用,但重复全面读取可能移动未改变的数据,并使源影响更难以控制。管道还必须定义如何用完整快照替换或调整先前记录。
增量提取仅读取已知检查点之后的新数据或更改的数据。源可能暴露修改时间戳、序列值、变更流、版本标识符或稳定的分页游标。检查点必须持久存储,并仅在提取批次经过验证并安全交给下游后推进。
网页源通常缺乏可靠的变更源。在这种情况下,增量行为可以使用计划的页面发现、条件请求、内容哈希或稳定记录键的比较。明确盲点:一个页面可以改变并在观察之间返回到其早期内容,而修改时间戳可能丢失或不准确。
如何衡量提取质量?
提取质量有几个维度。完整性询问是否存在必要的记录和字段。准确性询问值是否与源匹配并保留其含义。一致性询问是否在记录之间应用相同的规则。及时性询问数据是否足够新以供预期决策使用。
在字段、记录、批次和源级别衡量质量。字段检查捕获无效类型或单位。记录检查捕获不可能的组合和缺失的标识符。批次检查捕获意外的数量或重复的键。源检查将提取的表示与代表性页面、API响应或数据库查询进行比较。
不要依赖单个成功标志。请求可以成功,同时返回错误页面、空状态或意外区域。解析器可以生成语法上有效的输出,而语义上却是错误的字段。质量规则必须测试数据的含义,而不仅仅是检查代码是否执行。
如何保留数据血缘?
数据血缘将每个输出值连接到其来源和处理历史。最少保留源标识符、收集时间、提取版本和生成字段的规则或路径。敏感项目可能需要额外的批准和保留元数据,而简单的公共数据集可能仅需要一个URL和捕获标识符。
当血缘在转换中生存时最有用。如果显示的价格字符串变成规范的小数和货币代码,则保留原始值或可追溯的参考。当后续规则更改时,审核人员可以区分源更正和转换更改。
故意管理版本模式和提取映射。一个新字段可以向后兼容,而更改现有字段的含义或单位可能需要新的模式版本。下游消费方应知道每个批次的产生版本及何时需要迁移。
提取如何处理敏感数据?
数据最小化在访问之前开始。列出所需的字段以满足指定目的,并排除方便但不必要的值。公共可见性并不消除隐私、合同、安全或伦理考虑,特别是当信息可以识别或描绘个人时。
对提取凭证、原始捕获、中间文件和最终数据集应用访问控制。日志应记录操作证据,而不复制敏感载荷。保留规则应指定何时删除原始和派生数据,并且导出应限制为已批准的消费者。
审查来源条款、管辖权、知识产权限制和下游用例。如果项目涉及个人、受限或高影响数据,在收集之前应涉及法律、隐私和安全审查员。技术有效的提取方法并不决定结果使用是否合适。
结论
数据提取将选择的值从源中移出并导入到定义的记录结构中。最强大的工作流程将模式、来源、验证和最小化视为提取设计的一部分,而不是后期添加的清理。
准备构建您的网络数据工作流程吗?
使用Scrapeless检索公共网络内容,然后应用适合您数据集的发现和提取模式。
免费开始 →常见问题
数据提取与ETL是一样的吗?
不是。数据提取是ETL的第一阶段;转换和加载是改变和存储提取值的单独阶段。
网络抓取是一种数据提取方法吗?
是的。网络抓取从网络源中提取选择的数据,并通常添加检索、解析和选择器逻辑。
数据提取可以是手动的吗?
是的。将值复制到电子表格中是手动提取,但自动提取更容易重复、验证和扩展。
什么是提取架构?
提取架构定义了每个输出记录的预期字段、类型、必需值和关系。