Scrapy项目声明中的IF语句 [英] IF Statement within Scrapy item declaration

查看:36
本文介绍了Scrapy项目声明中的IF语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用scrapy构建蜘蛛以监视网站上的价格.该网站的价格显示方式不一致.对于它的标准价格,它始终使用相同的CSS类,但是当产品进行促销时,它使用两个CSS类之一.两者的CSS选择器如下:

I'm using scrapy to build a spider to monitor prices on a website. The website isn't consistent in how it displays it's prices. For it's standard price, it always uses the same CSS class, however when a product goes on promotion, it uses one of two CSS classes. The CSS selectors for both are below:

response.css('span.price-num:last-child::text').extract_first()
response.css('.product-highlight-label')

以下是我的物品当前在蜘蛛中的外观:

Below is how my items currently look within my spider:

    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')

我尝试过的每种方法都失败了.

Each way I've tried this I have failed.

推荐答案

我可以使用它.这是我的代码:

I got it to work. Here's my code:

    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

这篇关于Scrapy项目声明中的IF语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆