由于Visual Web Ripper的强大功能,我正在使用Xpath来抓取一个网站(合法地一次!!)。
我需要获得的内容之一是H3标签后面的P标签内容。现在这很好,如果我想要下一个我可以使用以下代码:
//DIV[@id='content']/H3[. = 'Prices']/following-sibling::P[1]
但是我怎么能说我想要所有P标签的内容 - 直到下一个H3?
答案 0 :(得分:1)
使用强>:
//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
)
]
这里我们使用Kayessian公式来交叉两个节点集$ns1
和$ns2
:
$ns1[count(.|$ns2) = count($ns2)]
答案 1 :(得分:0)
使用Visual Web Ripper,您可以使用包含所有兄弟节点的非标准函数SPAN,直到遇到指定的元素。
尝试:
//DIV[@id='content']/H3[. = 'Prices']/following-sibling::P[SPAN('H3')]
答案 2 :(得分:-1)
感谢您的反馈和投入,但我发现活动更容易/更快/更整洁(欢迎评论)
//DIV[@id='content']/H3[. = 'Prices']/following-sibling::P[./preceding-sibling::H3[1][. = 'Prices']]