Ruby 让Nokogiri决定是使用#fragment还是#parse

Ruby 让Nokogiri决定是使用#fragment还是#parse,ruby,xml,nokogiri,Ruby,Xml,Nokogiri,我想用Nokogiri解析一段HTML,但我不知道它是一个完整的HTML文档(带有DOCTYPE等)还是一个片段(例如,只包含一些元素的div) 这对Nokogiri来说有所不同,因为它应该使用#fragment来解析片段,而#parse用于解析完整文档 有没有办法确定给定的文本片段是片段还是完整的HTML文档 Denis最简单的方法是查找必需的标记,例如使用正则表达式/])/(允许属性) 这足以解决您的问题吗?取决于页面的垃圾程度,但是 /^(?:\s*<!DOCTYPE)|(?:\s*

我想用Nokogiri解析一段HTML,但我不知道它是一个完整的HTML文档(带有DOCTYPE等)还是一个片段(例如,只包含一些元素的div)

这对Nokogiri来说有所不同,因为它应该使用#fragment来解析片段,而#parse用于解析完整文档

有没有办法确定给定的文本片段是片段还是完整的HTML文档


Denis

最简单的方法是查找必需的
标记,例如使用正则表达式
/])/
(允许属性)


这足以解决您的问题吗?

取决于页面的垃圾程度,但是

/^(?:\s*<!DOCTYPE)|(?:\s*<html)/

/^(?:\s*在这两种情况下都有很好的理由使用parse。它只需使用html构建文档,您就可以更轻松地使用xpath。请注意,HTML5中不需要
标记。例如,请参阅。
标记可能更合适。根据参考文章,也不需要使用title标记uired,body和body都不是。不,但是不需要
标记的情况非常不可能发生,并且只有在没有body内容时才可以省略
标记(另一种不可能发生的情况)。