在Scrapy项目声明中的IF声明

时间:2018-01-22 20:48:52

标签: python css if-statement web-scraping scrapy

我使用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')

我试过的每一种方式都失败了。

1 个答案:

答案 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