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

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

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些