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

标签 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 返回整个文本但在一个字符串中而不是在多个字符串中?

最佳答案

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


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

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

作为单个字符串,将上述 XPath 类似地包装在 string() 中:

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)

关于html - 如何返回 XPath 表达式的单个字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37015039/

相关文章:

html - 将文本内容包裹在剪切路径多边形(三 Angular 形)形状内,并在另一半剪切图像

javascript - 我的 Greasemonkey 脚本在控制台中输入时有效,但在 Firefox 中尝试使用时无效

javascript - HTML 中多个表中同一列的相同 [不固定] 宽度

python - 混合 xml/文本解析 python

c# - Linq 到 XML 转换器

PHP XML 库不返回 XPath 结果

html - 选择元素后具有相同类的所有元素

java - JAXB 为没有内容的标签设置一个值

python - 将字符串添加到 Selenium 中的 xPath

java - 如何仅使用属性来定位 Selenium 中的元素,而不管属性包含什么值