获取XPath选择器以输出父元素和子元素的文本
我有一个HTML标记,如下所示:获取XPath选择器以输出父元素和子元素的文本,xpath,Xpath,我有一个HTML标记,如下所示: <html> <body> <h1>This is a <b>xyz</b> test</h1> </body> </html> 这是一个xyz测试 如果我执行hxs.select('/html/body/h1/text()).extract()输出将是这是一个测试。我应该如何指定XPath,以使输出为这是一个xyz测试您只需编写:'/htm
<html>
<body>
<h1>This is a <b>xyz</b> test</h1>
</body>
</html>
这是一个xyz测试
如果我执行
hxs.select('/html/body/h1/text()).extract()
输出将是这是一个测试。我应该如何指定XPath,以使输出为这是一个xyz测试您只需编写:'/html/body/h1'
。使用text()
函数选择的文本节点是h1
的子节点(xyz
不是)。尝试执行/html/body/h1//text()
。双斜杠将查找节点的所有下降线,不一定是子节点,您可能需要
XPath表达式选择的每个节点都有相应的字符串值。发件人:
元素节点的字符串值是
中元素节点的所有文本节点子体的字符串值
文件顺序
这正是你想要的。此字符串值通常隐式使用,但您可以使用string
函数显式检索它。再说一遍:
string函数将对象转换为字符串,如下所示:
- 通过返回的字符串值将节点集转换为字符串
节点集中文档顺序第一位的节点。如果
节点集为空,则返回空字符串
像这样使用它:
string(/html/body/h1)
是的,如果我这样做,我知道我可以得到整个h1元素(带有html标记)。我的问题是如何使用XPath进行这是一个xyz测试(没有html标记),而不需要自己进行任何进一步的手动处理。
string(/html/body/h1)