微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

加载(X) HTML页面后,我试图获取标记的“内容属性的值.例如,给定:

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

我想提取价值“约翰史密斯”.

我知道如何使用XPath并理解CSS主要用于元素选择,但Nokogiri支持定义custom CSS pseudoclasses我认为可以使用如下:

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']

据我所知,伪类只能用于过滤节点集,但不能用一些其他值替换节点集,例如其中一个节点属性的值.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐