当前位置: 首页 > 面试题库 >

如果不使用regexp,HTML解析如何工作?

燕禄
2023-03-14
问题内容

我每天看到很多问题,询问如何解析或从HTML字符串中提取内容,第一个答案/评论始终是“不要使用RegEx解析HTML,以免感到愤怒!”
(有时会省略最后一部分)。

这对我来说很混乱,我一直认为,一般而言,解析任何复杂字符串的最佳方法是使用正则表达式。那么HTML解析器如何工作?它不使用正则表达式进行解析。

使用正则表达式的一个特殊论点是,并不总是存在解析替代方法(例如JavaScript,其中DOMDocument不是普遍可用的选项)。以jQuery为例,使用正则表达式将HTML字符串转换为DOM节点似乎可以很好地进行管理。

不确定是否要继续进行此操作,这是一个真正的问题,我想得到回答,而并不是要成为讨论话题。


问题答案:

通常通过使用令牌处理程序。HTML5规范草案具有用于处理“现实世界HTML”的广泛算法。



 类似资料:
  • 问题内容: 我在JMeter中使用正则表达式遇到了一些麻烦。我有这种形式的HTML 我需要获取JMeter 中and 的值作为变量。 问题答案: 请改用XPath Extractor 。 如果 必须 使用正则表达式,只需搜索正则表达式标签解析即可。

  • 问题内容: 我正在尝试使用jsoup解析HTML。这是我第一次使用jsoup,并且我也阅读了有关它的一些教程。以下是我要解析的HTML表- 如果您看到我的下表,则它现在有3个(我只是为了理解目的将其缩短为3个表行,但总的来说会更多)。现在,我想从我的下表中提取出它的对应信息,例如-我将提取其群集状态及其状态为关闭的所有主机名。 正如你可以看到下面的群集名称,我有两个主机名和其地位,但地位。 因此,

  • 正如您在下面看到的集群名称,我有两个主机名和,其中状态为,但状态为。 因此,我将打印作为集群名,并打印作为主机名,因为它已关闭。使用JSOUP可以做到这一点吗? 到目前为止,我能够使用jsoup提取整个HTML表,但不确定如何提取集群名和主机名- 更新:- 表中可能有两个集群名称,如下所示- 现在,如果您看到上面,我有两个集群名称--一个是,另一个是,所以我想找到所有仅为集群名称关闭的计算机。

  • 问题内容: 如何解析HTML / XML并从中提取信息? 问题答案: 本机XML扩展 我更喜欢使用本机XML扩展]之一,因为它们与PHP捆绑在一起,通常比所有第3方库都快,并为我提供了所需的所有标记控制权。 DOM DOM扩展使您可以使用PHP 5通过DOM API通过XML文档进行操作。它是W3C的Document Object Model Core Level 3的实现,它是一种平台和语言无关

  • 问题内容: 这是我必须从中提取值5390.85,5428.15,5376.15和5413.85的HTML源。我想使用jsoup做到这一点。但是我对jsoup比较陌生(今天我开始使用它)。那我该怎么办呢? 我已经使用jsoup提取了网站的内容。但是如何提取我需要的值?提前致谢 问题答案: 尝试这样的事情: 这是打印输出:-

  • 问题内容: 我需要解析(服务器端)大量的HTML页面。 我们都同意,regexp不是行之有效的方法。 在我看来,javascript是解析HTML页面的本机方式,但是这种假设取决于服务器端代码,该代码具有javascript在浏览器内部具有的所有DOM功能。 Node.js是否具有内置的功能? 有没有更好的方法来解决此问题,请在服务器端解析HTML? 问题答案: 您可以使用npm模块jsdom和h