python scrapy xpath text()使用<b>提取文本失败

时间:2017-08-02 10:24:04

标签: python xpath scrapy

我正在使用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()的行为是否正确?

2 个答案:

答案 0 :(得分:0)

行为是正确的。

response.xpath('//div [@class="CCCCC"]/text()')

会将[AAA, BBB, CCC, DDD]作为列表,但您的代码为

response.xpath('//div [@class="CCCCC"]/text()')[0].extract()

请注意,您询问with [0]第一个元素。这就是为什么你只能获得AAA

如果删除[0],则会包含所有四个元素。

答案 1 :(得分:0)

请避免在scrapy中使用“[0] .extract()”,否则可能导致列表索引出错。

请使用response.xpath('//div [@class="CCCCC"]/text()').extract_first(),如果没有第一个元素,它将为您节省费用

有关详细信息,请点击此处Scrapy Selector