循环响应以将项目保存到数据库(Django,Scrapy)

2024-10-03 06:28:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个项目中,我在网上搜索各种家具并获取它们的属性。我使用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,我觉得我不能有效地使用它。 我会很感激你的建议。 还有一个额外的问题:管道做什么,在什么情况下我应该使用它。我看过官方文件,但我觉得我需要一个简单的解释。在

谢谢。在


Tags: 项目textin数据库forresponseextracth2
1条回答
网友
1楼 · 发布于 2024-10-03 06:28:16

我不明白这个用例,也就是说,为什么你需要响应计数。根据如何实现存储逻辑,您可以在某些iterable中拥有这些项(可以迭代,不需要事先计数),也可以使用项管道逐个存储项,因为这些项通过管道。在

项目管道用于处理从废件引擎返回的项目。您可以损坏项目、根据项目的值执行操作或丢弃它们。我认为文档中的examples很能说明问题。另外,您可以查看Scrapy architecture以了解全局情况以及管道的位置。在

相关问题 更多 >