2015-10-13 5 views
3

Могу ли я применить Xpath как «вложенный» способ? Я попытался найти решение, я ожидал, что первая строка вернет один элемент <li>, из которого я мог бы извлечь его ссылку, применив второе выражение 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() 

Обратите внимание на период . во 2-й XPath. Это позволит выбрать атрибут @href всех элементов привязки, которые являются потомками элементов li, с class="navitem". Без периода . выражение aaa[0].xpath('//a/@href').extract() вернет атрибут @href из всех якорных тегов во всем документе.

+0

Я думаю, что это должно быть _aaa [0] ..._. Возможно, стоит подчеркнуть, что без ведущей точки, xpath OP будет искать весь документ. – tdelaney

+0

Спасибо, я глупо ответил, не тестируя свое решение, потому что знал, что этот период пропал! – gtlambert

+0

отлично, это помогает! Спасибо – Turo

Смежные вопросы