【问题标题】:IF Statement within Scrapy item declarationScrapy 项目声明中的 IF 语句
【发布时间】:2018-07-01 13:57:13
【问题描述】:

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

否则item['promo_price'] = extract_with_css('.product-highlight-label')

我尝试过的所有方法都失败了。

【问题讨论】:

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


    【解决方案1】:

    我让它工作了。这是我的代码:

        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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多