【发布时间】:2017-08-03 18:33:56
【问题描述】:
我正在使用 scrapy shell 并尝试获取以下元素的文本部分
<div class="CCCCC">AAA<br />BBB<br />CCC<br />DDD</div>
通过使用
response.xpath('//div [@class="CCCCC"]')[0].extract()
我得到了一个包含标签的整个元素,
<div class="CCCCC">AAA<br>BBB<br>CCC<br>DDD</div>
但使用
response.xpath('//div [@class="CCCCC"]/text()')[0].extract()
我只得到了'AAA',而不是我预期的'AAA<br>BBB<br>CCC<br>DDD'。
text() 的行为是否正确?
【问题讨论】:
-
你为什么会这样?
<br>是一个标签,所以你只有AAA是完全合理的。 -
text()是一个节点测试并选择文本节点的节点。有 4 个文本节点是<div class="CCCCC">的子节点:“AAA”、“BBB”、“CCC”、“DDD”。'AAA<br>BBB<br>CCC<br>DDD'是 innerHTML 或其他东西会带给你的东西。但是你不能仅从 XPath 中得到它。