Scrapy提取非包装数据

时间:2017-02-02 15:52:17

标签: python regex scrapy expression

我试图用scrapy提取具体的价格数据,但价格没有包含在标签中。

如何从这个HTML中组合价格?

<div class="value">
      <span class="currency">€</span>
     39
     <span class="decimal">.98</span>
     <span class="type">New</span>
</div>

如何将其细化为39,98?

使用的解决方案:

"".join(response.xpath("//section[@class='order order--new order--left']//div[@class='spec  price']//div[@class='value']//text()").re("[0-9.]+"))

1 个答案:

答案 0 :(得分:2)

获取元素内的所有文本节点并加入:

$ scrapy shell file://$PWD/index.html
In [1]: "".join(response.xpath("//div[@class = 'value']//text()").re("[0-9.]+"))
Out[1]: u'39.98'

.re()有助于仅过滤数字和点。

如果文档中有多个值:

In [2]: ["".join(value.xpath(".//text()").re(r"[0-9.]+")) for value in response.xpath("//div[@class = 'value']")]
Out[2]: [u'39.98']