从选择器中移除子节点
我正在用Scrapy创建一个项目,目的是从网页上抓取特定的数据。
items = sel.xpath('//div[@class="productTiles cf"]/ul').extract()
for item in items:
price = sel.xpath('//ul/li[@class="productPrice"]/span/span[@class="salePrice"]').extract()
print price
这样做会得到以下结果:
u'<span class="salePrice">$20.43\xa0<span class="reducedFrom">$40.95</span></span>',
u'<span class="salePrice">$20.93\xa0<span class="reducedFrom">$40.95</span></span>
我想要的只是销售价格,比如20.43和20.93,而不需要其他标签和数据。希望能得到一些帮助。
2 个回答
0
span[@class="salePrice"]
会返回一个包含子元素的 span
。
这段代码应该只获取最外层 span
的文本内容:
sel.xpath('//ul/li[@class="productPrice"]/span/span[@class="salePrice"]/text()').extract()[0]
0
看起来解决方案是这样的:
//ul/li[@class="productPrice"]/span/span[@class="salePrice"]//text()
它会抓取我想要的那个元素的文本,像这样:
u'$20.43\xa0', u'$20.93\xa0'
现在我只需要处理一下,去掉最后多余的东西,就可以了。如果有人有更好的方法,我很想看看。