使用 python 3.8 和 scrapy 1.6,我想检查产品的星级是否等于或大于 3.5,然后检查另一个条件(如果 discount_percent 等于或大于 10%),然后抓取该产品的一些元素。问题是,我猜,scraped star 和 discount_percent 元素是非英文数字并且包含“%”。因此,虽然我使用的是 utf8,但当我将代码行包装在 float() 和 int() 函数中时,我得到了这个日志:
这是我的蜘蛛代码:
def parse(self, response):
for product in response.xpath("//ul[@class='c-listing__items']/li"):
title= product.xpath(".//a[@class='js-product-url']/text()").get()
star= float(product.xpath(".//div[@class='c-product-box__engagement-rating']/text()").get())
discounted_percent= int(product.xpath(".//div[@class='c-price__discount-oval']/span/text()").get())
discounted_price= int(product.xpath(".//div[@class='c-price__value-wrapper']/text()").get())
original_price= int(product.xpath(".//div[@class='c-price__value c-price__value--plp']/del/text()").get())
url= response.urljoin(product.xpath(".//a[@class='js-product-url']/@href").get())
if star>=3.5 and discounted_percent>=10:
yield{
'title':title,
'star':star,
'discounted_percent':discounted_percent,
'discounted_price':discounted_price,
'original_price':original_price,
'url':url
}
我该如何解决这个问题?感谢您的帮助!
弑天下
相关分类