2015-06-03 3 views
0

Пусть часть статьи выглядит следующим образом (источник HTML):XPath для выбора участка статьи

<h2>Introduction</h2> 
    .... 
<h2>References</h2> 
    ...a bunch of text... 
<h2>Further Readings</h2> //optional 
    ..... 

Я хотел бы знать, возможно ли это с выражением XPath извлечь «Ссылки» часть в приведенном выше примере?

Я пробовал что-то вроде //h2[contains(.,'References']/following::*, однако я не знаю, как указать конец моего желаемого раздела, он возвращает остальную часть документа.

+0

Можете ли вы показать, что там, между «Литературами» и «Дальнейшими чтениями»? Благодарю. – alecxe

ответ

2

если вы хотите элементов до следующего h2 использовать такой XPath

//*[following-sibling::h2[preceding-sibling::h2[1][contains(.,'References')]] and preceding-sibling::h2[contains(.,'References')]] 

Wath это значит: он находит все элементы, который имеет

- впереди h2, который имеет 1-й предшествующую h2, содержащие

«Список литературы» - h2 назад, содержащие «Ссылки»

Первое правило принимает все элементы от начала xml до следующего тега h2. 2-й - после нужного тега h2 до конца xml. Пересечение их дает необходимые элементы.

Или XPath может быть, опираясь на ваше предложение:

//h2[.='References']/following-sibling::*[preceding-sibling::h2[1][contains(.,'References')] and not(name()='h2')] 

принять все после того, как необходимое h2 тег //h2[.='References']/following-sibling::*, который не является h2 и имеет наш h2 тег как 1 h2 перед

+0

Спасибо, однако, я думаю, вы имеете в виду 1-е правило, 2-е правило. – Ahmad

+0

Нет. Я прав. В первом случае xpath, как бы вывернутый наизнанку. :) – splash58

0

Xpath для вышеприведенного текста будет

// h2 [текст() 'Ссылки' =]

И если вы хотите проверить Правильность Выше Затем XPath открытой веб-страницы я хром право нажмите и проверить элемент, нажмите кнопку ESC, чтобы открыть консоль инструмента для разработчиков и типа, как Это

$ х («// h2 [текст()„Ссылки“=]») и нажмите клавишу ВВОД

Это даст вам один HTML код парить на эту строку и увидеть его выдвигает на первый план «Список литературы» текст или нет, если он выдвигает на первый план текста означает XPath правильно

+0

Благодарим вас за введение инструмента, но он просто возвращает часть заголовка, а не раздел, который я имел в виду. – Ahmad

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