Scrapy如果其他库存水平

时间:2018-01-01 17:46:31

标签: python scrapy

目前,我正在开展一个项目,以保持电子商务网站的当前库存水平不超过数据Feed。我已经构建了一个蜘蛛来收集数据并制作我自己的Feed但是我遇到了一些问题,如果“立即购买”按钮存在则创建规则将库存设置为0,如果“立即购买”按钮确实存在,则设置为9。任何帮助,将不胜感激。非常感谢!

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

from cdaddy.items import CdaddyItem

class CdspiderSpider(CrawlSpider):
    name = 'cdspider'
    allowed_domains = ['cuff-daddy.com']
    start_urls = ['http://cuff-daddy.com/']

    rules = (
        Rule(LinkExtractor(), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        href = CdaddyItem()
        href['url'] = response.url
        # Inventory
        inv = response.css('boolean(btn-buy-now').extract()
        if inv == 'True':
            inv = ('12')
        else:
            inv = ('0')
        # SKU
        sku = response.xpath('//div[5]/div/div[2]/form/div/div[1]/ul/li[1]/span[2]/text()').extract()

1 个答案:

答案 0 :(得分:0)

如果您正在尝试使用类btn-buy-now(这是Buy Now输入按钮的标记)检查是否存在标记,那么您正在将选项混合在一起。您正在将xpathboolean函数与css混合使用(因为您使用的是response.css)。

您应该只执行以下操作:

inv = response.css('.btn-buy-now')
if inv:
    inv = ('12')
else:
    inv = ('0')

因为response.css('.btn-buy-now')找到了存在的东西。如果没有,那么它将返回一个空列表(默认为False