我遇到了以下问题:我正在从网站上抓取价格,它可以工作,但只需要逗号前面的数字。
示例:当某物值(value)“€ 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())
最佳答案
关键问题是您要求 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'
关于python - Scrapy:将数据存储在一个项目字段的嵌套标签中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27786972/