【问题标题】:Nokogiri raises error when parsing html with <meta charset='UTF-8>Nokogiri 在使用 <meta charset='UTF-8> 解析 html 时引发错误
【发布时间】:2021-03-07 13:49:30
【问题描述】:

当我将 &lt;meta charset='UTF-8&gt; 添加到 .html 文件时,Nokogiri::HTML 引发错误。

文件如下:

<!DOCTYPE html> 
<html>
  <head>
    <meta charset="UTF-8">
    <title>My super content</title>
    <link rel="stylesheet" type="text/css" href="./static.css">
  </head>

  <body>
    <footer>
      <p></p>
    </footer>
    <script type="text/javascript" src="./static.js"></script>
  </body>

</html>

当我解析它时,我得到:

$ doc = Nokogiri::HTML(open('myfile.html'))
$ doc.errors
> [#<Nokogiri::XML::SyntaxError: 10:12: ERROR: Tag footer invalid>]

删除&lt;meta charset="UTF-8"&gt; 解决问题。

为什么?我怎样才能让它与它一起工作?

【问题讨论】:

    标签: ruby-on-rails ruby html-parsing nokogiri


    【解决方案1】:

    Nokogiri 主要是一个 XML 解析器,因此需要大部分有效的 XML。尽管 HTML 看起来很像 XML,尤其是在 HTML 5 中,但有不同的规则,例如关闭标签和算法来检测诸如编码之类的东西,这使得 HTML 5 与 XML 和 XML 解析器不兼容。

    在与您的问题相关的an issue 中,Mike Dalessio(nokogiri 维护者之一)的回应是:

    Nokogiri 不支持 HTML5。您可能想查看Nokogumbo 项目,该项目旨在实现与Gumbo 解析器的HTML5 兼容性。

    猜你喜欢
    • 2020-10-26
    • 1970-01-01
    • 2011-06-09
    • 2015-08-21
    • 2018-09-24
    • 2020-08-04
    • 2017-12-09
    • 2018-12-31
    相关资源
    最近更新 更多