尝试使用Nokogiri和自定义伪类CSS选择器提取属性值



加载了(X)HTML页面后,我试图获得元标记的"content"属性的值。例如,给定:

<meta name="author" content="John Smith" />

我想提取值"John Smith"

我知道如何使用XPath并理解CSS主要用于元素选择,但Nokogiri支持定义自定义CSS伪类,我认为可以这样使用:

class CSSext
  def attr(nodeset, tag)
    nodeset.first.attribute_nodes.find_all {|node| node.name == tag}
  end
end
doc = Nokogiri::HTML(open(someurl))
doc.css("meta[name='name']:attr('content')", CSSext.new)

但是,它返回的结果与

相同
doc.css("meta[name='name']")

给了什么?Nokogiri在CSS和XPath搜索中使用了相同的引擎,所以在XPath中可能的任何事情在CSS中都应该是可行的。我应该如何提取属性值?

为什么不呢?

doc.at("meta[name='author']")['content']

据我所知,伪类只能用于过滤节点集,而不能用其他值(如节点的某个属性的值)替换节点集。

相关内容

  • 没有找到相关文章

最新更新