我遇到了以下问题:我从网站上抓取价格并且有效,但只需要逗号前面的数字。
例子:什么东西值得"€79, 90 "它只会刮掉79,而不是90。
<span class="price right right10">
€ 79,
<sup>
90*
</sup>
</span>
我想将它存储在一个项目字段中,如下所示:
class Prices(scrapy.Item):
price = scrapy.Field()
这是我当前的xpath选择器:
item['price'] = ''.join(sel.xpath('div[@class="waresSum"]/p/span/text()').extract())
答案 0 :(得分:3)
关键问题是你要求span
的直接文本子节点,你需要从span
元素的内部获取所有文本节点:
//div[@class="waresSum"]/p/span//text()
HERE^
另外,我会使用.re()
过滤掉不需要的字符,只获取数字,
和-
:
$ scrapy shell index.html
In [9]: ''.join(response.xpath('//span//text()').re(r'[0-9,\-]+'))
Out[9]: u'79,90'