目前,我正在开展一个项目,以保持电子商务网站的当前库存水平不超过数据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()
答案 0 :(得分:0)
如果您正在尝试使用类btn-buy-now
(这是Buy Now
输入按钮的标记)检查是否存在标记,那么您正在将选项混合在一起。您正在将xpath
等boolean
函数与css
混合使用(因为您使用的是response.css
)。
您应该只执行以下操作:
inv = response.css('.btn-buy-now')
if inv:
inv = ('12')
else:
inv = ('0')
因为response.css('.btn-buy-now')
找到了存在的东西。如果没有,那么它将返回一个空列表(默认为False
)