R语言XPath文本抓取:按后代a标签href属性筛选p节点文本内容
解决方案
你可以直接使用以下XPath表达式完成筛选:
支持XPath 2.0+的环境(可直接返回拼接好的文本列表)
//div[@class='intervention']/p[.//a/@href='value1']/normalize-space(.)
执行后会直接返回你需要的["xxxtext1", "xxxtext3", "xxxtext5", "xxxtext6"]格式的结果。
仅支持XPath 1.0的环境
先使用以下表达式定位到所有符合条件的p节点:
//div[@class='intervention']/p[.//a[@href='value1']]
拿到节点列表后,在代码层依次提取每个p节点的全部文本内容,去除多余的换行、空白字符即可得到目标结果。
逻辑说明
- 筛选条件
[.//a/@href='value1']会匹配所有后代节点中存在href属性为value1的a标签的p节点,正好对应你的筛选要求 normalize-space(.)会自动将当前p节点下的所有文本(包括后代a标签内的文本)拼接后去除首尾空白、合并中间的多余空白/换行,正好匹配你需要的文本拼接效果
内容的提问来源于stack exchange,提问作者Etienne Brossard
相关产品推荐
相关产品推荐

