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