【问题标题】:Scrapy: store data with part in a nested tag in one item fieldScrapy:将数据部分存储在一个项目字段中的嵌套标签中
【发布时间】:2015-01-05 20:02:56
【问题描述】:

我遇到了以下问题:我正在从网站上抓取价格,它可以工作,但它只需要逗号前面的数字。

示例:当某物价值“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())

【问题讨论】:

    标签: python xpath web-scraping scrapy


    【解决方案1】:

    关键问题是你要求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'
    

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2020-05-17
      • 2014-08-18
      相关资源
      最近更新 更多