Après avoir chargé une page (X)HTML, j'essaie d'obtenir la valeur de l'attribut "content" d'une balise méta. Par exemple, étant donné :
<meta name="author" content="John Smith" />
Je voudrais extraire la valeur "Jean Dupont".
Je sais comment le faire en utilisant XPath et je comprends que CSS a été conçu principalement pour la sélection d'éléments mais Nokogiri permet de définir pseudoclasses CSS personnalisées qui pourrait être utilisé comme suit :
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)
Cependant, cela renvoie le même résultat que
doc.css("meta[name='name']")
Que se passe-t-il ? Nokogiri utilise le même moteur en dessous pour les recherches CSS et XPath, donc tout ce qui est possible dans XPath devrait être réalisable dans CSS. Comment dois-je procéder pour extraire la valeur de l'attribut ?