如何使用XPath选取两个标签之间的全部文本?
如何用XPath选取两个标签之间的全部文本
嘿,我来帮你搞定这个问题!先看看你的HTML结构,要选的是<a name="dst100030"></a>和<a name="dst100031"></a>之间的所有文本内容对吧?下面给你几个实用的XPath方案:
方案1:选取两个标签之间的所有节点(可提取文本)
这个表达式能精准定位到两个目标<a>标签之间的所有兄弟节点:
//a[@name='dst100030']/following-sibling::node()[following-sibling::a[@name='dst100031']]
- 拆解一下:
//a[@name='dst100030']:先定位到第一个目标<a>标签following-sibling::node():选取该标签之后的所有兄弟节点[following-sibling::a[@name='dst100031']]:过滤出那些后面还存在第二个目标<a>标签的节点——也就是刚好在两个<a>之间的内容
方案2:直接获取合并后的文本内容
如果不需要节点结构,只想拿到合并后的纯文本,用string()函数包裹上面的路径就行:
string(//a[@name='dst100030']/following-sibling::node()[following-sibling::a[@name='dst100031']])
执行后会得到:
│Лабораторные методы исследования │ ├────────────┬───────────────────────────┬─────────────────┬──────────────┤
方案3:精准定位到中间的<pre>标签文本
因为你的中间内容都在<pre>标签里,也可以直接定位这些标签来提取文本:
//a[@name='dst100030']/following-sibling::pre[following-sibling::a[@name='dst100031']]/span/text()
这个表达式会直接返回两个<span>标签里的文本内容,适合只需要具体文本片段的场景。
要是你用的是Chrome开发者工具、Python的lxml库或者其他支持XPath的工具,直接把这些表达式输进去就能拿到想要的内容啦!
内容的提问来源于stack exchange,提问作者JBJ
相关产品推荐
相关产品推荐

