2014-09-08 4 views
0

у меня есть это в качестве узла для анализа:XPATH для проверки конкретного текста в пределах узла

<h3 class="atag"> 
    <a href="http://www.example.com"> 
     <span class="btag">text to be ignored</span> 
     </a> 
      <span class="ctag">text to be checked</span> 
</h3> 

Мне нужно извлечь «http://www.example.com», но не часть текста игнорируется; Мне также нужно проверить, что если ctag содержит текст для проверки.

Я придумал это, но, похоже, он не выполняет эту работу.

response.xpath("//h3/a/@*[not(self::span)]").extract() 

любая идея по этому вопросу?

ответ

2

Если вам нужно просто выбрать href из тега 'a', используйте @href. также проверить, содержит ли ГКД какой-нибудь текст, я думаю, вы можете использовать такой код:

'//h3[contains(span[@class="ctag"]/text(), "text to be checked")]/a/@href' 

Это проверить, есть ли пролет с «текстом, чтобы проверить» внутри заданного h3 блок. Если текст существует, будет найден «www.example.com», иначе будет пустой результат.

+0

Это сработало, спасибо –

0

Вы имеете в виду что-то вроде этого XPath? :

//h3/a[following-sibling::span[@class='ctag' and .='text to be checked']/@href 

выше XPath получает <a> тега, а затем <span class="ctag">, содержащее значение "text to be checked", а затем вернуть href атрибут из ранее упомянутых <a> тега.

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