为 BaseX 清理并转换 HTML 为 XML
Clean and convert HTML to XML for BaseX
我想 运行 一些 XQuery 命令在 HTML 源上使用 BaseX,这些源可能充满 <script>
、<style>
必须删除的节点,并且必须成对的未闭合标签(<br>
、<img>
)。 (例如 this page 的脏源)
"Converting HTML to XML" 建议使用 Tidy,但它没有 GUI,而且在我的源代码上似乎无法正常工作(它不输出任何内容),我怀疑它是否删除了脚本和其他不必要的标签。顺便说一句,它很旧。
因为没有找到满足我需求的问题,所以我又问了一遍。因为和编码查询的工具很接近,所以在这里问了一下。
BaseX has integration for TagSoup,这会将 HTML 转换为格式正确的 XHTML.
大多数 BaseX 发行版已经捆绑了 TagSoup,如果您从 Linux 存储库安装 BaseX,您可能需要手动添加它(例如,在 Debian 和 Ubuntu 上它被称为 libtagsoup-java
).上面链接的文档中提供了不同安装选项的更多详细信息。
之后,使用命令
将 TagSoup 解析器设置为默认
SET PARSER html
或在 XQuery 序言中使用
declare option db:parser "html";
之后,只需获取您想要的文档即可。您链接的亚马逊网站示例:
declare option db:parser "html";
doc('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=camera')
这应该有效,但没有。我正在向主要开发人员询问它不存在的原因(似乎是因为某些 HTTP 重定向),并将在问题解决后更新答案(或者我理解为什么这不起作用)。在此之前的解决方法是将文档作为文本获取并将其解析为 HTML:
html:parse(fetch:text('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=camera')
我想 运行 一些 XQuery 命令在 HTML 源上使用 BaseX,这些源可能充满 <script>
、<style>
必须删除的节点,并且必须成对的未闭合标签(<br>
、<img>
)。 (例如 this page 的脏源)
"Converting HTML to XML" 建议使用 Tidy,但它没有 GUI,而且在我的源代码上似乎无法正常工作(它不输出任何内容),我怀疑它是否删除了脚本和其他不必要的标签。顺便说一句,它很旧。
因为没有找到满足我需求的问题,所以我又问了一遍。因为和编码查询的工具很接近,所以在这里问了一下。
BaseX has integration for TagSoup,这会将 HTML 转换为格式正确的 XHTML.
大多数 BaseX 发行版已经捆绑了 TagSoup,如果您从 Linux 存储库安装 BaseX,您可能需要手动添加它(例如,在 Debian 和 Ubuntu 上它被称为 libtagsoup-java
).上面链接的文档中提供了不同安装选项的更多详细信息。
之后,使用命令
将 TagSoup 解析器设置为默认SET PARSER html
或在 XQuery 序言中使用
declare option db:parser "html";
之后,只需获取您想要的文档即可。您链接的亚马逊网站示例:
declare option db:parser "html";
doc('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=camera')
这应该有效,但没有。我正在向主要开发人员询问它不存在的原因(似乎是因为某些 HTTP 重定向),并将在问题解决后更新答案(或者我理解为什么这不起作用)。在此之前的解决方法是将文档作为文本获取并将其解析为 HTML:
html:parse(fetch:text('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=camera')