Как получить следующих братьев и сестер до указанного элемента - PullRequest
2 голосов
/ 22 апреля 2011

Я использую Xpath для очистки сайта (законно на этот раз !!) благодаря удивительным возможностям Visual Web Ripper.

Одной из областей содержимого, которые мне нужно получить, является содержимое тега P после тега H3.Теперь это нормально, если я хочу следующий, я могу использовать следующий код:

//DIV[@id='content']/H3[. = 'Prices']/following-sibling::P[1]

Но как я могу сказать, что я хочу, чтобы содержимое всех тегов P было до следующего H3?

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

Использование :

//div[@id='content']/h3[. = 'Prices']
  /following-sibling::p
    [count
      (. | 
       //div[@id='content']
              /h3[. = 'Prices']/following-sibling::h3/preceding-sibling::p
      )
     =
     count
      (
       //div[@id='content']
             /h3[. = 'Prices']/following-sibling::h3/preceding-sibling::p
       )
      ]

Здесь мы используем формулу Кейса для пересечения двух наборов узлов $ns1 и $ns2:

$ns1[count(.|$ns2) = count($ns2)]
0 голосов
/ 26 февраля 2013

В Visual Web Ripper вы можете использовать нестандартную функцию SPAN, которая включает в себя все узлы-братья и сестры, пока не встретится указанный элемент.

Попробуйте:

//DIV[@id='content']/H3[. = 'Prices']/following-sibling::P[SPAN('H3')]
0 голосов
/ 22 апреля 2011

Спасибо за ваши отзывы и пожелания, ребята, но я нашел мероприятие проще / быстрее / аккуратнее (комментарии приветствуются)

//DIV[@id='content']/H3[. = 'Prices']/following-sibling::P[./preceding-sibling::H3[1][. = 'Prices']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...