Scrapy:将数据存储在一个项目字段中的嵌套标记中

时间:2015-01-05 20:02:56

标签: python xpath web-scraping scrapy

我遇到了以下问题:我从网站上抓取价格并且有效,但只需要逗号前面的数字。

例子:什么东西值得"€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())

1 个答案:

答案 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'