Xpath在同一个div中使用混合元素获取文本

时间:2018-01-29 15:12:30

标签: xpath web-scraping scrapy screen-scraping

以下是一些示例HTML

<div class="something">
  <p> This is a <b> Paragraph </b> with <a href="/something"> mixed </a> elements
 <p> Next paragraph....
</div>

我试过的是

//div[contains('@class','something')/text()

//div[contains('@class','something')/*/text()

//div[contains('@class','something')/p/text()

所有这些似乎都跳过'b'标签和'a'标签。

3 个答案:

答案 0 :(得分:3)

尝试" ".join(sel.xpath("//div[contains(@class,'something')]//text()").extract()) sel选择器,response

答案 1 :(得分:2)

使用XPath表达式

//div[contains(@class,'something')]//text()

获取所选text()元素中所有div个节点的文本的串联。

<强>输出:

This is a  Paragraph  with  mixed  elements  
Next paragraph....

答案 2 :(得分:1)

这取决于您想要获得的内容和方式。无论如何,你尝试过的东西有几个问题:

  • 您在XPath表达式中]之后缺少右括号(contains)。
  • @class中使用时,
  • contains不应包含在(单个)引号中。

如果您想将div元素的所有文本作为一个字符串,则可以使用

normalize-space(//div[contains(@class,'something')])