如何返回XPath表达式的单个字符串值?

时间:2016-05-03 21:54:20

标签: html xml xpath

这是我的HTML:

<?xml version="1.0" encoding="UTF-8"?>

<div class="single-main"> 
  <h3 class="description-area">Description</h3>  
  <p>bla bla bla
    <br/> some text 
    <br/> some text here ,
    <br/> other text here
  </p> 
</div>

我想在一个 XPath表达式中获取整个文本。

这是我的代码:

response.xpath(".//h3[@class='description-area']/following-sibling::p
                //text()[count(preceding-sibling::br) >= 0]").extract()[0]

但它只返回第一个br之前的文本(我知道原因,那是因为我使用的是.extract()[0],如果我使用.extract()[1]和[2] .. ..我会得到我想要的东西,但我必须使用.extract [0],因为它是一个平台就是这样。是否有任何XPath返回整个文本,但在一个字符串而不是多个字符串?

1 个答案:

答案 0 :(得分:3)

string(/)将返回整个文档的字符串值。

更新:要返回此XPath返回的四个单独的字符串,

.//h3[@class='description-area']/following-sibling::p//text()[count(preceding-sibling::br) >= 0]

作为单个字符串,在string()中包含上述XPath:

string(.//h3[@class='description-area']/following-sibling::p//text()[count(preceding-sibling::br) >= 0])

更新2 :但不需要进行brtext()演习。您只需获取p

的字符串值即可
string(.//h3[@class='description-area']/following-sibling::p)