2015-10-13 45 views
3

我可以以「嵌套」方式應用Xpath嗎? 我嘗試了下面的解決方案,我期待第一行返回一個<li>元素,然後我可以通過應用2nd xpath表達式來提取它的鏈接。但是,我似乎做錯了,第二行仍然返回第一個全球找到,而不是在我的<li>將xpath應用於xpath操作的結果

aaa = response.xpath('//ul/li[@class="navitem")]') 
bbb = aaa.xpath('//a/@href').extract() 
+0

你有偷看過_aaa_嗎?它應該是一個列表。 – tdelaney

+0

在這種情況下,我認爲單個xpath''// ul/li [@ class =「navitem」)] [1] // a''也可以。 – tdelaney

回答

3

你可以使用:

aaa = response.xpath('//ul/li[@class="navitem")]') 
bbb = aaa[0].xpath('.//a/@href').extract() 

注意在第二的XPath期間.。這將選擇li元素的後代class="navitem"的所有錨元素的@href屬性。沒有期間.,表達式aaa[0].xpath('//a/@href').extract()將從整個文檔中的所有錨標記返回@href屬性。

+0

我認爲它應該是_aaa [0] ..._。值得強調的是,如果沒有前導點,OP的xpath將搜索整個文檔。 – tdelaney

+0

謝謝,我愚蠢地回答,沒有測試我的解決方案,因爲我知道這段時間不見了! – gtlambert

+0

太棒了,這有助於!謝謝 – Turo