如何将参数从中间件传递到管道

时间:2018-08-31 21:20:54

标签: scrapy

我需要将参数从中间件spider_opened()传递给管道:close_spider()个函数。

我正在编写自定义代码,以避免刮掉重复的项目。我正在将已抓取的数据加载到“下载中间件”模块中,然后检查请求URL和DATE项是否与数据库中的相同,并确定是删除还是继续请求。到目前为止,它运行良好,但最后蜘蛛仅获取更新的项目。

除那些外,我需要填充所有已经刮掉的物品。为此,我在“管道”模块中编写了“自定义CSV编写器”,但不知道如何传递在“中间件”模块中加载的数据库。

整个想法是:

  1. 加载数据库是中间件模块

  2. 检查URL和DATE值是否与数据库匹配(同样在中间件中)

    如果URL和DATE匹配,则删除请求

    如果URL匹配但DATE并未从数据库中删除项目并继续请求

    如果URL和DATE不匹配,则继续请求

  3. 然后从管道中,我可以访问新抓取的项目并将其存储到CSV文件中。

剩下的唯一事情就是将未删除的项目从中间件中的数据库存储起来,但是我不知道如何将它们传递给管道模块。

0 个答案:

没有答案
相关问题