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

标签 python xpath web-scraping scrapy

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

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

相关文章:

python - 根据内容过滤字符串列表

javascript - 从 http 响应中获取 API : Get title, 关键字和正文

python - 在 python 中使用 BS 抓取页面仅捕获 splitColumn 的第一列

python - 比较运算符为 | 提供不同的值& 与 and or 相比 - Python

Python 样条曲线或其他在 x 轴上随时间变化的插值?

python - 试图将两个单独的 excel 工作表合并为一个

Python Selenium Webdriver 检查元素是否不存在需要时间

xpath - 在XPATH函数上过滤介体

XPath 2.0 : how to select the current node - current() no longer available

r - R 中的链接检查器