use*_*506 4 html css ruby css-selectors nokogiri
加载(X)HTML页面后,我试图获取元标记的"内容"属性的值.例如,给定:
<meta name="author" content="John Smith" />
Run Code Online (Sandbox Code Playgroud)
我想提取价值"约翰史密斯".
我知道如何使用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)
Run Code Online (Sandbox Code Playgroud)
但是,这会返回相同的结果
doc.css("meta[name='name']")
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?Nokogiri使用相同的引擎进行CSS和XPath搜索,因此在XPath中可能的任何东西都应该在CSS中可行.我该如何提取属性值?
为什么不呢?
doc.at("meta[name='author']")['content']
Run Code Online (Sandbox Code Playgroud)
据我所知,伪类只能用于过滤节点集,但不能用一些其他值替换节点集,例如其中一个节点属性的值.
| 归档时间: |
|
| 查看次数: |
3629 次 |
| 最近记录: |