lxml
基于 libxml2 的高性能 Python XML/HTML 解析库,支持 XPath、命名空间处理与 DOM 操作,常用于处理结构化文档
时间轴 (近 90 天)
网络爬虫的技术栈通常包括请求库requests与解析库BeautifulSoup或lxml。
处理XHTML文件时,由于默认命名空间xmlns="http://www.w3.org/1999/xhtml"的存在,XPath查询如//p会返回空结果,必须显式提供命名空间映射(例如namespaces={'xhtml': 'http://www.w3.org/1999/xhtml'}并查询//xhtml:p)。
作者评估后选择ebooklib管理容器、lxml操作内容,认为这是在便利性和控制力之间的最佳平衡。
在替换段落文本时,正确做法是保留原元素,删除所有子节点后设置.text属性,而不是新建元素替换旧元素,这样才能保留标签、属性和尾文本。
一本约10万词的300页小说,解析加重建(不含LLM翻译时间)在标准VPS上耗时约2-3秒,瓶颈在ZIP压缩解压,lxml的DOM操作仅需毫秒级。
lxml可能把<p></p>变成<p/>,部分阅读器会因此出错,团队最终改用更宽容的HTML解析器来处理许多并非严格合法XML的EPUB。
处理真实世界EPUB时推荐使用容错解析库,如Python的lxml配合recover=True选项或BeautifulSoup的lxml-xml解析器
惰性导入意味着只有在真正使用相关功能时才加载 torch、nltk、lxml 等重型依赖,从而降低包的启动开销和内存占用
全部知识事实 (8)
网络爬虫的技术栈通常包括请求库requests与解析库BeautifulSoup或lxml。
50%待验证处理XHTML文件时,由于默认命名空间xmlns="http://www.w3.org/1999/xhtml"的存在,XPath查询如//p会返回空结果,必须显式提供命名空间映射(例如namespaces={'xhtml': 'http://www.w3.org/1999/xhtml'}并查询//xhtml:p)。
50%待验证作者评估后选择ebooklib管理容器、lxml操作内容,认为这是在便利性和控制力之间的最佳平衡。
50%待验证在替换段落文本时,正确做法是保留原元素,删除所有子节点后设置.text属性,而不是新建元素替换旧元素,这样才能保留标签、属性和尾文本。
50%待验证一本约10万词的300页小说,解析加重建(不含LLM翻译时间)在标准VPS上耗时约2-3秒,瓶颈在ZIP压缩解压,lxml的DOM操作仅需毫秒级。
50%待验证lxml可能把<p></p>变成<p/>,部分阅读器会因此出错,团队最终改用更宽容的HTML解析器来处理许多并非严格合法XML的EPUB。
50%待验证处理真实世界EPUB时推荐使用容错解析库,如Python的lxml配合recover=True选项或BeautifulSoup的lxml-xml解析器
50%待验证惰性导入意味着只有在真正使用相关功能时才加载 torch、nltk、lxml 等重型依赖,从而降低包的启动开销和内存占用
50%