使用XML解析器解析html文档

Ken*_*lac 9 html xml parsing html-parsing

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

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

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

sid*_*ker 13

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

  • 从不使用结束标记且不使用XML所谓的"自闭标签语法"的元素; 例如<br>,<meta>,<link>,和<img>(也称为空隙元素)
  • 不需要结束标记的元素; 例如,(可以暗示他们的结束标签)<p> <dt> <li>
  • 可以包含未转义标记 " <"字符的元素; 例如,风格,文本,标题,脚本 ; <script> if (a < b) … </script>,<title>Using the "<" operator</title>
  • 具有不带引号的值的属性; 例如,<metacharset=utf-8>
  • 属性为,没有给出单独的值; 例如,<inputdisabled>

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

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


总而言之,在开发一种新型XML解析方面也做了大量工作 - 所谓的XML5解析 - 即使在XML文档中也能处理空/未引用的属性属性.有一个XML5规范草案,以及一个XML5解析器,xml5ever.


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

如果您要创建一个Web爬虫应用程序,您绝对应该使用HTML解析器 - 理想情况下,HTML解析器符合HTML标准中解析要求.

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



Mic*_*Kay 7

在句法上它们几乎完全相同

电脑很挑剔."几乎相同"还不够好.HTML允许XML不支持的内容,因此XML解析器将拒绝(许多但不是全部)HTML文档.

此外,还有不同的品质文化.对于HTML,解析器的文化是"如果可能的话,尝试用输入做一些事情".使用XML,文化是"如果它有缺陷,请将其送回维修或更换".