0
假設我有以下的HTML代碼:搜索具有特定內容的元素?
...
<p>bla bla</p>
<h3>Foobar</h3>
<p>bla bla</p>
<p>bla bla</p>
<h3>Example</h3>
...
有沒有一種方法來獲取其中包含文本Foobar
第一h3
元素?
假設我有以下的HTML代碼:搜索具有特定內容的元素?
...
<p>bla bla</p>
<h3>Foobar</h3>
<p>bla bla</p>
<p>bla bla</p>
<h3>Example</h3>
...
有沒有一種方法來獲取其中包含文本Foobar
第一h3
元素?
可以使用contains()
XPath function:
doc.xpath("//h3[contains(text(), 'Foobar')]")
或者,如果目標文本可能是在h3
後代文本節點,使用:
doc.xpath("//h3[contains(.//text(), 'Foobar')]")
由於這是HTML,我會建議CSS選擇器:
puts doc.at_css('h3:contains("Foobar")')
#=> <h3>Foobar</h3>
CSS選擇趨向解析HTML時做出了更具可讀性的表達式。我傾向於將XPath僅用於XML,或者當我需要XPath表達式的全部功能時。
HTML或XML,無論哪種方式,CSS選擇器在大多數情況下都比XPath更具可讀性。儘管XPath有更多的功能。 –