Javascript Xpath获取具有内部文本的所有链接
我想抓取一个包含内部文本的页面上所有链接的集合 这些都是有效案例:Javascript Xpath获取具有内部文本的所有链接,javascript,xpath,Javascript,Xpath,我想抓取一个包含内部文本的页面上所有链接的集合 这些都是有效案例: <a>Foo</a> <a><span>Bar</span></a> <a></a> <a><span></span></a> <a>Foo</a> <a><span>Bar</span></a> <a&g
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
//a[string()]
Foo
酒吧
这些案例无效:
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
//a[string()]
我试过:
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
//a[string()]
//a[text()]
但这会忽略跨度大小写
//a[not(text()='')
但这不会过滤掉空的大小写
是否有办法检查text()=NULL
注意:
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
//a[string()]
我知道我可以使用
document.links编码>,然后手动筛选,但我希望只有一个干净的表达式。正确的表达式是:
//a[normalize-space()]
谢谢你的启发。正确的表达是:
//a[normalize-space()]
谢谢你给我的启发。虽然@Seanny123的答案是正确的,但我会这样做:-
HTML:
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
//a[string()]
虽然@Seanny123的答案是正确的,但我会这样说:-
HTML:
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
<a>Foo</a>
<a><span>Bar</span></a>
<a></a>
<a><span></span></a>
//a[string()]
为什么只有规范化-space()
?这也是有效的-//a[string()]
。您测试它并让我知道,如果它正确,那么我希望它作为答案发布!:)显然,我对速度的要求有点过分了。在进一步的基准测试之后,我发现它们基本上是无法区分的,但我仍然更喜欢string()
方法,因为它更可读。为什么只normalize-space()
?这也是有效的-//a[string()]
。您测试它并让我知道,如果它正确,那么我希望它作为答案发布!:)显然,我对速度的要求有点过分了。在进一步的基准测试之后,我发现它们基本上无法区分,但我仍然更喜欢string()
方法,因为它更具可读性。