我使用scrapy构建蜘蛛来监控网站价格。该网站在显示价格方面并不一致。对于它的标准价格,它总是使用相同的CSS类,但是当产品继续促销时,它使用两个CSS类中的一个。两者的CSS选择器如下:
response.css('span.price-num:last-child::text').extract_first()
response.css('.product-highlight-label')
以下是我的项目目前在我的蜘蛛中的样子:
item = ScraperItem()
item['model'] = extract_with_css('.product-id::text')
item['link'] = extract_with_css('head meta[property="og:url"]::attr(content)')
item['price'] = extract_with_css('span.list-price:last-child::text')
item['promo_price'] = extract_with_css('span.price-num:last-child::text')
yield item`
我希望有类似的东西:
如果response.css('span.price-num:last-child::text')
为真
item['promo_price'] = extract_with_css('span.price-num:last-child::text')
ELSE item['promo_price'] = extract_with_css('.product-highlight-label')
我试过的每一种方式都失败了。
答案 0 :(得分:0)
我得到了它的工作。这是我的代码:
item = ScraperItem()
item['model'] = extract_with_css('.product-id::text')
item['link'] = extract_with_css('head meta[property="og:url"]::attr(content)')
item['price'] = extract_with_css('span.list-price:last-child::text')
if response.css('span.price-num:last-child::text'):
item['promo_price'] = extract_with_css('span.price-num:last-child::text')
else:
item['promo_price'] = extract_with_css('.product-highlight-label::text')
yield item