这是我的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返回整个文本,但在一个字符串而不是多个字符串?
答案 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 :但不需要进行br
和text()
演习。您只需获取p
:
string(.//h3[@class='description-area']/following-sibling::p)