微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用XML解析器解析html文档

我可以使用 XML解析器解析HTML文件吗?

为什么我不能这样做.我知道XML用于存储数据,HTML用于显示数据.但从语法上讲,它们几乎完全相同.

预期用途是创建HTML解析器,它是Web爬网程序应用程序的一部分

您可以尝试使用XML解析器解析HTML文件,但它可能会失败.原因是HTML文档可以具有XML解析器无法理解的以下HTML功能.

>从不使用结束标记且不使用XML所谓的“自闭标签语法”的元素;例如,< br>,< Meta>,< link>和< img> (也称为虚空元素)
>不需要结束标记的元素;例如,< p> &LT峰; dt> <李> (他们的结束标签可以暗示)
>可以包含非转义标记的元素“<”字符;例如,风格,文本,标题,脚本; <脚本> if(a< b)...< / script>,< title>使用“<”操作符LT; /标题>
>带有不带引号的值的属性;例如,< Metacharset = utf-8>
>属性为空,没有给出单独的值;例如,< inputdisabled>

XML解析器将无法解析使用任何这些功能的任何HTML文档.

另一方面,无论文档包含什么,HTML解析器基本上都不会失败.

总而言之,在开发一种新的XML解析方面也做了大量工作 – 所谓的XML5解析 – 即使在XML文档中也能处理空/不带引号的属性属性.有一个draft XML5 specification,还有as an XML5 parser,xml5ever.

The intended use is to make an HTML parser,that is part of a web
crawler application

如果您要创建一个Web爬虫应用程序,您绝对应该使用HTML解析器 – 理想情况下,是一个符合parsing requirements in the HTML standard的HTML解析器.

目前,有许多(甚至大多数)语言的符合HTML的解析器;例如.:

> parse5(node.js / JavaScript)
> html5lib(python)
> html5ever(生锈)
> validator.nu html5 parser(java)
> gumbo(c,with bindings for ruby,objective c,c++,per,php,c#,perl,lua,D,julia…)

原文地址:https://www.jb51.cc/xml/292343.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。