如何获取特定节点内所有子项的文本

时间:2015-05-06 11:37:46

标签: html xml xpath scrapy

我有一个节点,它包含文本和其他节点,它们也有文本。我想在该节点内获取文本,无论它有什么子节点。

例如,我可以有这种情况:

<span class="title">text text text</span>

或者这种情况:

<span class="title">text text text <p>text text text</p> <div>text text</div> <span>

我需要的是 span 节点内的所有文字。

我试过了:

span[@class='title']//text()

但问题是代码不适用于这种情况:

<span class="title">text text <br><br>text text <br><br>text text </span>

1 个答案:

答案 0 :(得分:1)

string value函数返回span元素的string()

string(span[@class='title'])

代表

<span class="title">text text text <p>text text text</p> <div>text text</div> </span>

它返回

text text text text text text text text 

按要求。但请注意

<span class="title">text text <br><br>text text <br><br>text text </span>

格式不正确的XML ,因此没有XPath可行,但如果清理未关闭的br元素,

<span class="title">text text <br/><br/>text text <br/><br/>text text </span>

你会得到

text text text text text text 

正如所料。