【发布时间】:2015-12-08 21:46:12
【问题描述】:
我有类似以下html:
<div class="articleBody">
<p>
<strong>Text</strong> lorem ipsum...
<strong>lorem ipsum...</strong>
</p>
<p>lorem ipsum
<strong> lorem ipsum lorem ipsum</strong>
lorem ipsum...lorem ipsum...lorem ipsum...lorem ipsum...
</p>
</div>
以更一般的方式,我有一个<p> 标签列表,里面有几个<strong> 标签。
我想获取所有 <p> 标记的文本,减去 <strong> 标记...我的意思是“articleBody”div 类中的文本。
我拥有的是
response.xpath('string(//div[@class="articleBody"]//p)'.extract()
但这只会返回第一个<p>。
任何帮助将不胜感激。
【问题讨论】:
-
我不知道scrapy,但你应该能够通过使用
//div[@class="articleBody"]/p/text()来获取所有这些文本。 p.s 我可能误解了“减去 标签的含义。 -
Luciddream 是对的,或者如果您不关心 p 标签是否是 div[@class="articleBody"] 的直接子代,则使用 //p 而不是 /p。可以将所有内容转储到一个字符串中,例如:''.join(response.xpath('//div[@class="articleBody"]/p//text()').extract())