如何使用XPath提取H1标签中的纯数字内容
用XPath提取H1标签中章节后的数字
目标HTML代码
<header> <h1>Example Chapter 01</h1> <span class="epx">Kamis, 08 Sep 2022, in <i class="fas fa-book-open"></i> <a href="/manga/isekai-de-onnanoko-no-onaneta/" title="Example"> Example</a></span> </header> <div class="desch">Example.</div> </div>
不同版本XPath的解决方案
1. XPath 2.0及以上(支持高级字符串函数)
如果你的环境支持XPath 2.0,有两种简洁写法:
- 直接取最后一段内容(适合章节后只有数字的固定格式):
//h1/tokenize(text(), '\s+')[last()]
通过空格拆分H1文本,取最后一个片段,就是目标数字。
- 精准匹配“Chapter”后的内容:
//h1/substring-after(text(), 'Chapter ')
直接提取“Chapter ”之后的全部文本,刚好是数字部分。
2. XPath 1.0(兼容性更强,无高级函数)
如果只能用XPath 1.0,用字符串截取组合实现:
- 基础截取:
//h1/substring(text(), string-length(substring-before(text(), 'Chapter ')) + string-length('Chapter '))
先计算“Chapter ”前面文本的长度,加上“Chapter ”本身的长度,从该位置开始截取后续内容。
- 只保留数字(防止章节后有非数字内容):
//h1/translate(substring-after(text(), 'Chapter '), translate(substring-after(text(), 'Chapter '), '0123456789', ''), '')
先拿到“Chapter ”后的内容,再移除其中所有非数字字符,仅保留数字。
内容的提问来源于stack exchange,提问作者LoLyz Project
相关产品推荐
相关产品推荐

