"""使用 trafilatura 解析 HTML"""
from typing import Optional, Tuple
def parse(file_path: str) -> Tuple[Optional[str], Optional[str]]:
"""使用 trafilatura 解析 HTML 文件"""
try:
import trafilatura
except ImportError:
return None, "trafilatura 库未安装"
try:
with open(file_path, 'r', encoding='utf-8') as f:
html_content = f.read()
except FileNotFoundError:
return None, f"文件不存在: {file_path}"
except Exception as e:
return None, f"读取文件失败: {str(e)}"
try:
markdown_content = trafilatura.extract(
html_content,
output_format="markdown",
include_formatting=True,
include_links=True,
include_images=False,
include_tables=True,
favor_recall=True,
include_comments=True,
)
if markdown_content is None:
return None, "trafilatura 返回 None"
if not markdown_content.strip():
return None, "解析内容为空"
return markdown_content, None
except Exception as e:
return None, f"trafilatura 解析失败: {str(e)}"