如何编写XPATH从指定HTML中抓取「Location:」后的目标文本
精准提取Location内容的XPath实现方案
原有写法的核心缺陷
之前的XPath仅完成了目标p元素的整体定位,没有深入到被<br>标签分隔的独立文本节点层级,也没有针对「Location:」固定前缀做文本截断,因此只能返回整个p元素的全部内容,无法隔离出需要的目标位置文本。
可直接复用的正确写法
适配XPath 1.0(兼容Scrapy、lxml等绝大多数常用解析工具)
substring-after(//h3[contains(., 'Description')]/following-sibling::p[1]/text()[contains(., 'Location:')], 'Location: ')
适配XPath 2.0+(兼容Saxon等新版解析引擎)
//h3[contains(., 'Description')]/following-sibling::p[1]/tokenize(., '<br>')[contains(., 'Location:')] => substring-after(., 'Location: ')
规则匹配说明
- 定位逻辑优先基于「Description」标题的相邻关系锁定目标p元素,不依赖固定class属性,页面结构轻微变动时容错性更强
- 利用HTML中
<br>标签的节点分隔特性,直接定位到独立存放「Location:」文本的节点,提取范围自动截止到下一个<br>标签位置,完全满足“识别到「Location:」后抓取紧随其后的一段文本即停止”的提取要求 - 通过
substring-after函数自动去除「Location:」固定前缀,针对给定示例HTML,最终提取结果为Australia.
内容的提问来源于stack exchange,提问作者Rich Stevens
相关产品推荐
相关产品推荐

