我试图用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.]+"))
答案 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']