如何通过XPath选取指定h1下span元素文本的前3个单词?
提取元素文本前3个单词的XPath写法
先明确目标HTML结构:
<h1 id="title" class="a-size"><span>Web page title - web page title</span></h1>
根据你使用的XPath版本,有两种实现方式:
XPath 2.0+(推荐,支持多数现代工具)
直接用字符串拆分和筛选函数,写法简洁:
string-join(tokenize(.//h1[@id='title']/span/text(), '\s+')[position() <= 3], ' ')
逻辑说明:
tokenize(文本, '\s+'):把文本按任意数量的空白符拆分成单词列表[position() <= 3]:筛选出列表里的前3个单词string-join(列表, ' '):把这3个单词用空格拼接成完整字符串
XPath 1.0(兼容旧工具/环境)
XPath 1.0没有数组和拆分函数,只能靠字符串截取拼接:
concat( substring-before(.//h1[@id='title']/span/text(), ' '), ' ', substring-before(substring-after(.//h1[@id='title']/span/text(), ' '), ' '), ' ', substring-before(substring-after(substring-after(.//h1[@id='title']/span/text(), ' '), ' '), ' ') )
逻辑说明:
- 分步截取第一个、第二个、第三个空格前后的内容,最后用
concat把三个单词拼接起来
如果文本里还有其他分隔符(比如例子里的-),可以把XPath 2.0里的正则改成'[\s-]+',就能同时按空格和连字符拆分单词。
内容的提问来源于stack exchange,提问作者Linux
相关产品推荐
相关产品推荐

