我有以下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()")
我不知道为什么这不起作用,看起来应该很简单。有可能得到评论吗?
答案 0 :(得分: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>