我正在使用pQuery(一个jQuery的Perl端口)来选择元素并从HTML文档中检索文本。
考虑以下标记:
<x>
<y>code1</y>
<z>stuff</z>
<y>code2</y>
<z>foobar</z>
</x>
以下pQuery代码:
my $target_value = pQuery($markup)->find($pquery_selector)->text;
我正在尝试使用以下规则制定$pquery_selector
,使其与上述标记中的<z>foobar</z>
匹配:找到z
之后的y
- 元素-element,其主体包含"code2"
。虽然这可以使用jQuery,但我不确定pQuery语法是否足以处理这样的表达式。
使用pQuery语法可以进行这种选择吗?
答案 0 :(得分:1)
在jQuery中,有可能编写一个像'y:contains(code2)+ z'这样的选择器。但是,pQuery仍然没有完成(从版本0.07开始),像x + z这样的选择器只是给出了一个错误,表明模块开发人员还没有去翻译jQuery代码的那一部分。
由于pQuery自2008年以来一直未被触及,我建议自己修复它(代码在cpan和github上),或者使用更成熟的模块,如HTML :: TreeBuilder :: XPath(这需要学习XPath语法,但实际上适用于非平凡的事情。)
上述jQuery选择器的XPath等价物将是'// y [contains(text(),'code2')] / following-sibling :: z'