先說結(jié)論:
| xpath | 說明 |
|---|---|
| //h1[2] | 將文檔中的h1根據(jù)兄弟節(jié)點(diǎn)關(guān)系進(jìn)行分組,取每組的第2個(gè)h1 |
| (//h1)[2] | 將文檔中所有h1作為一個(gè)組,取第2個(gè)h1 |
我們針對如下html測試一下
<html>
<body>
<h1>1</h1>
<h1>2</h1>
<div>
<h1>3</h1>
<h1>4</h1>
</div>
<h1>5</h1>
</body>
</html>
為了方便演示,我用Chrome瀏覽器控制臺來測試xpath。F12打開控制臺,在Elements選項(xiàng)卡下按Ctrl+F打開搜索框,然后就可以直接輸入xpath表達(dá)式并實(shí)時(shí)看到匹配結(jié)果了。
Chrome瀏覽器控制臺xpath測試輸入框
我們分析以下以下幾個(gè)xpath表達(dá)式的測試結(jié)果
//h1[2]匹配下圖高亮節(jié)點(diǎn)
//h1[2]匹配結(jié)果
//h1[3]匹配下圖高亮節(jié)點(diǎn)
h1[3]匹配結(jié)果
(//h1)[3]匹配下圖高亮節(jié)點(diǎn)
(//h1)[3]匹配結(jié)果
我們畫出如下dom樹,就能比較清楚的理解。可以看出1,2,5三個(gè)h1節(jié)點(diǎn)是在同在body下的兄弟節(jié)點(diǎn),作為一個(gè)組,3,4兩個(gè)同在div下作為另一個(gè)組。
//h1[2]分別匹配到[1,2,5]這個(gè)組中的2,和[3,4]這個(gè)組中的4,//h1[3]只能匹配[1,2,5]組中的5,而[3,4]這個(gè)組沒有第3個(gè)節(jié)點(diǎn),未能匹配上。
(//h1)[3]匹配的是文檔中所有h1組成的組中第3個(gè)h1,這里的括號表示將文檔中所有的h1算作一個(gè)組(以在文檔中出現(xiàn)的次序?yàn)轫樞颍?br>
dom樹.PNG
希望以上對你有所幫助。