每个产品都与大量价格页面相关联,我不希望为其创建单独的商品。相反,我喜欢将数据聚合到单个字段中,例如每种产品的价格。
目前,下面的内容是每次都会覆盖productprice字段。即productprice字段是一个包含单个项目的列表(最后产品价格已刮除)
我想保留产品的每个价格,并在商品退回后汇总这些数据。
parse_it(self, response):
....
for path in links:
yield Request(
path,
meta={
'item': item_loader.load_item()
},
callback=self.parse_price_page,
dont_filter=True
)
parse_price_page(self, response):
productname = response.meta['item']['productname']
product_price= response.xpath("//table/tr/td/text()").extract()
item_loader.add_value("productprice", product_price)
return item_loader.load_item()
答案 0 :(得分:0)
首先,我没有看到你在parse_price_page()
中创建了ItemLoader,但是你正在使用它。
其次,您可以使用ItemLoader.get_collected_values()
来读取上次收集的值,将其添加到新值并存储。
这是一个未经考验的例子,你应该玩这个方法,直到你做对了:
def parse_price_page(self, response):
item_loader = ItemLoader(item=response.meta['item'])
productname = item_loader.get_collected_values('productname')
old_price = item_loader.get_collected_values('productprice')
new_price = response.xpath("//table/tr/td/text()").extract()[0]
item_loader.add_value("productprice", int(old_price)+int(new_price))
return item_loader.load_item()