gpt4 book ai didi

python - 使用 scrapy 的缓冲管道

转载 作者:行者123 更新时间:2023-11-28 20:21:19 24 4
gpt4 key购买 nike

我目前正在使用 Scrapy 0.24 抓取一个网站.该网站具有以下 url 格式:

www.site.com?category={0}&item={1}&page={2}

我有一个 MySQLStorePipeline 负责将每个废弃的项目存储在数据库中。但是我有 80 个类别、10 个项目和 15 个页面,这导致 80 * 10 * 15 = 120000 页。每个页面我生成 25 个 scrapy.Item,这给我们数据库中的 25 * 120000 = 3000000 行。

因此,每次管道接收到一个项目时,它都会插入到数据库中。这不是一个聪明的方法。我正在寻找一种方法来缓冲管道项目,例如,当我们收到 1000 个项目时,执行批量插入。我怎样才能做到这一点?

最佳答案

让管道将项目存储在列表中,并在它们达到一定长度时插入它们,并在蜘蛛关闭时插入。

class Pipeline(object):
def __init__(self):
super(Pipeline, self).__init__()
self.items = []

def process_item(self, item, spider):
self.items.append(item)
if len(self.items) >= 1000:
self.insert_current_items()
return item

def insert_current_items(self):
items = self.items
self.items = []
self.insert_to_database(items)

def close_spider(self, spider):
self.insert_current_items()

关于python - 使用 scrapy 的缓冲管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28264063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com