加載了(X)HTML頁面後,我試圖獲取元標記「內容」屬性的值。例如,給出:嘗試使用Nokogiri和自定義僞類提取屬性值CSS選擇器
<meta name="author" content="John Smith" />
我想提取值「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)
然而,這將返回相同的結果as
doc.css("meta[name='name']")
是什麼給出的? Nokogiri在CSS和XPath搜索中使用相同的引擎,所以XPath中可能的任何內容都應該可以在CSS中執行。我應該如何去提取屬性值?
爲什麼不採取簡單的路徑並使用'doc.css(「meta [name ='name']」)'? Nokogiri中的CSS是任何節點查找中XPath的非常有用的替代品。做簡單的事情,這使得它更容易理解和維護。 –
@Scott Roepnack:這不是[適當使用反引號](http://stackoverflow.com/editing-help#code-spans)進行格式化。還請注意,你已經導致鏈接Markdown打破以及... – BoltClock
@BoltClock謝謝 –