我在一个项目中,我在网上搜索各种家具并获取它们的属性。我使用djangitem将这些数据保存到我的数据库中。我的问题是让响应计数在for循环中使用它。如果我不知道的话。这是我的蜘蛛:
def parse(self, response):
now = timezone.now()
for item in response.css('.page-content-area'):
for i in range(5):
furnitureItem = FurnitureItem()
furnitureItem['furniture_type'] = 'Chair'
furnitureItem['name'] = item.css('h2 a::text').extract()[i]
furnitureItem['description'] = item.css('a span::text').extract()[i]
furnitureItem['href'] = item.css('h2 a::attr(href)').extract()[i]
furnitureItem['img_source'] = item.css('.lazy::attr(data-original)').extract()[i]
furnitureItem['price'] = item.css('.mt3::text').extract()[i]
furnitureItem['last_update'] = now
yield furnitureItem
这里的每个键都有多个值。我循环了5次,看看它是否保存了5个项目到数据库。是的。我想要的是获取响应的计数,以便在这个循环中使用它。我刚开始使用Scrapy,我觉得我不能有效地使用它。 我会很感激你的建议。 还有一个额外的问题:管道做什么,在什么情况下我应该使用它。我看过官方文件,但我觉得我需要一个简单的解释。在
谢谢。在
我不明白这个用例,也就是说,为什么你需要响应计数。根据如何实现存储逻辑,您可以在某些iterable中拥有这些项(可以迭代,不需要事先计数),也可以使用项管道逐个存储项,因为这些项通过管道。在
项目管道用于处理从废件引擎返回的项目。您可以损坏项目、根据项目的值执行操作或丢弃它们。我认为文档中的examples很能说明问题。另外,您可以查看Scrapy architecture以了解全局情况以及管道的位置。在
相关问题 更多 >
编程相关推荐