如何用XPath的contains获取目标文本节点?求助解决方法
问题解决方法
错误原因
你之前的XPath用了//div[@id="FNA_envelop"]/*,这个语法是选取div的子元素节点,但包含"Min Deng"的内容是div的直接文本节点(不属于任何子元素),所以匹配不到目标内容。
正确XPath写法
1. 定位包含"Deng"的文本节点
//div[@id="FNA_envelop"]/text()[contains(.,"Deng")]
这里用text()直接选取div下的所有文本节点,再通过contains(.,"Deng")筛选出包含目标字符串的节点。
2. 获取该文本节点后续的a标签
利用XPath的following-sibling轴,找到紧跟在目标文本节点后的第一个a标签:
//div[@id="FNA_envelop"]/text()[contains(.,"Deng")]/following-sibling::a[1]
3. 提取关联邮箱
可以直接提取a标签的data-email属性(比文本更准确):
//div[@id="FNA_envelop"]/text()[contains(.,"Deng")]/following-sibling::a[1]/@data-email
或者提取a标签的文本内容:
//div[@id="FNA_envelop"]/text()[contains(.,"Deng")]/following-sibling::a[1]/text()
内容的提问来源于stack exchange,提问作者JBJ
相关产品推荐
相关产品推荐

