fix: 文档解析链路修复 —— 缺失导入 + 静默吞错
- fetch.py: 补全 subprocess/zipfile/xml.etree.ElementTree/io 导入 (PDF/DOCX/XLSX 解析此前直接 NameError) - fetch.py main(): 检查 FetchResult.error_code, 文档解析失败不再 静默输出空内容 + exit 0, 改为明确报错并 exit 1 - search.py fetch_page(): 同样检查 error_code, 修复 --fetch 抓取 PDF 失败被误报 status=ok 的问题 - _parse_document_content: image/audio/video/* 类型统一返回 E_UNSUPPORTED_MEDIA (此前退化为乱码文本)
This commit is contained in:
@@ -879,6 +879,14 @@ def fetch_page(url: str, timeout: int = 10, auth_headers: dict = None,
|
||||
# 而非字符串匹配("Too Many Requests" 不含 "429" 会漏判)
|
||||
error_code = classify_error(e)
|
||||
|
||||
# fetch_url 对 PDF/DOCX/XLSX 解析失败不抛异常,而是返回带 error_code
|
||||
# 的 FetchResult——此处必须显式检查,否则失败会被当作成功处理
|
||||
# (空文本 + status="ok")。
|
||||
if result is not None and result.error_code:
|
||||
error_msg = result.error_message or result.error_code
|
||||
error_code = result.error_code
|
||||
result = None
|
||||
|
||||
# 反爬检测(v2.0.0 增强:全文档扫描 + WAF 指纹库)
|
||||
# 必须在 Wayback 兜底判断之前执行:Cloudflare 质询页常返回 HTTP 200,
|
||||
# 此时 result 非 None 但内容是反爬页,必须识别出来才能触发兜底。
|
||||
|
||||
Reference in New Issue
Block a user