0

次の HTML があり、スクリプト ノードでコメントを取得しようとしています。

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

これを使用して、スクリプト ノードを取得します。

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

ただし、xpath に追加comments()すると、何も返されません。

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

なぜこれが機能しないのかわかりません。単純なはずです。コメントをもらうことは可能ですか?

4

1 に答える 1

2

ドキュメントを XML として解析すると、コメントが見つかります。ただし、HTML として解析すると、Nokogiri は script タグの内容全体を 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 に答える