refactor: 统一 HTML Reader 的 parse 签名,使用文件路径参数
将所有 HTML Parser 的函数签名从接收 HTML 字符串改为接收文件路径, 与其他 Reader(PDF、DOCX 等)保持一致。 主要变更: - 修改 PARSERS 列表,移除 lambda 表达式,直接传递函数引用 - 在 HtmlReader.parse() 中统一管理临时文件(UTF-8 编码) - 每个 Parser 使用独立的临时文件副本,用完即清理 - 移除 download_and_parse() 方法,逻辑合并到 parse() 中 - 更新相关测试,改为直接传递文件路径 受影响的 Parser: - trafilatura.parse(html_content) -> parse(file_path) - domscribe.parse(html_content) -> parse(file_path) - markitdown.parse(html_content, temp_file_path) -> parse(file_path) - html2text.parse(html_content) -> parse(file_path)
This commit is contained in:
@@ -28,7 +28,7 @@ HTML/URL 文档解析能力,支持多种解析方法。
|
||||
|
||||
#### Scenario: HTML reader 解析 URL
|
||||
- **WHEN** 调用 HtmlReader.parse(input_path) 且 input_path 为 URL
|
||||
- **THEN** 系统调用内部的 download_and_parse() 方法
|
||||
- **THEN** 系统在内部处理 URL 下载和解析
|
||||
|
||||
#### Scenario: 按优先级尝试下载器
|
||||
- **WHEN** 输入为 URL
|
||||
@@ -215,19 +215,41 @@ HTML/URL 文档解析能力,支持多种解析方法。
|
||||
- **THEN** 系统返回错误信息包含编码检测失败原因
|
||||
|
||||
### Requirement: HTML reader 统一处理 URL 和文件
|
||||
系统 SHALL 在 HTML reader 的 parse() 方法中统一处理 URL 和本地文件。
|
||||
系统 SHALL 在 HTML reader 的 `parse()` 方法中统一处理 URL 和本地文件,无需单独的 `download_and_parse()` 方法。
|
||||
|
||||
#### Scenario: parse() 判断输入类型
|
||||
- **WHEN** 调用 HtmlReader.parse(file_path)
|
||||
- **WHEN** 调用 `HtmlReader.parse(file_path)`
|
||||
- **THEN** 系统判断 file_path 是 URL 还是本地文件
|
||||
|
||||
#### Scenario: URL 调用 download_and_parse
|
||||
#### Scenario: URL 下载后解析
|
||||
- **WHEN** file_path 为 URL
|
||||
- **THEN** 系统调用 self.download_and_parse(file_path)
|
||||
- **THEN** 系统下载 HTML 内容
|
||||
- **AND** 清理 HTML 内容
|
||||
- **AND** 创建临时文件(UTF-8 编码)
|
||||
- **AND** 传递临时文件路径给各 parser
|
||||
|
||||
#### Scenario: 本地文件读取并解析
|
||||
- **WHEN** file_path 为本地文件
|
||||
- **THEN** 系统使用编码检测读取文件,然后解析 HTML 内容
|
||||
- **THEN** 系统使用编码检测读取文件
|
||||
- **AND** 清理 HTML 内容
|
||||
- **AND** 创建临时文件(UTF-8 编码)或使用原文件路径
|
||||
- **AND** 传递文件路径给各 parser
|
||||
|
||||
### Requirement: 每个 HTML Parser 接收文件路径
|
||||
每个 HTML parser SHALL 接收文件路径作为输入,而非 HTML 字符串。
|
||||
|
||||
#### Scenario: Parser 接收 file_path
|
||||
- **WHEN** `HtmlReader.parse()` 调用 parser
|
||||
- **THEN** parser 接收 `file_path: str` 参数
|
||||
|
||||
#### Scenario: Parser 内部读取文件
|
||||
- **WHEN** parser 解析 HTML
|
||||
- **THEN** parser 内部使用 UTF-8 编码读取文件内容
|
||||
|
||||
#### Scenario: Parser 独立临时文件
|
||||
- **WHEN** 多个 parser 依次尝试
|
||||
- **THEN** 每个 parser 使用独立的临时文件副本
|
||||
- **AND** 用完后立即清理临时文件
|
||||
|
||||
### Requirement: HTML reader supports() 支持 URL
|
||||
系统 SHALL 在 HTML reader 的 supports() 方法中同时支持 URL 和 HTML 文件扩展名。
|
||||
|
||||
Reference in New Issue
Block a user