0

我有以下 HTML,并试图在脚本节点中获取注释:

<html>
    <head>
        <script language="JavaScript" type="text/javascript">
            <!--
            url = 'http://someurl.com';
            -->
        </script>
    </head>
</html>

使用它,我得到脚本节点:

javascript_code = doc.xpath("/html/head/script")

但是,当添加comments()到 xpath 时,它什么也不返回:

javascript_code = doc.xpath("/html/head/script/comment()")

我不知道为什么这不起作用,看起来应该很简单。是否有可能获得评论?

4

1 回答 1

2

如果将文档解析为 XML,它将找到注释。但是,如果您将其解析为 HTML,Nokogiri 会将脚本标记的全部内容放入 cdata 部分。然后你可以解析出来。

require 'rubygems'
require 'nokogiri'

body = DATA.read

doc = Nokogiri::XML(body)
puts doc.search('/html/head/script/comment()').text.strip 
# puts "url = 'http://someurl.com';"

doc = Nokogiri::HTML(body)
puts doc.search('/html/head/script').text.strip 
# puts "<!--\n            url = 'http://someurl.com';\n            -->"


__END__
<html>
    <head>
        <script language="JavaScript" type="text/javascript">
            <!--
            url = 'http://someurl.com';
            -->
        </script>
    </head>
</html>
于 2013-03-13T05:23:20.853 回答