在独立的scrapy脚本中使用自定义中间件

时间:2018-05-24 01:54:58

标签: python scrapy

我正在编写一个独立的抓取脚本(update.py),它实现了一个自定义下载器中间件。

该脚本目前正在使用记录为herehere的CrawlerProcess()API。

它看起来像这样:

from scrapy.crawler import CrawlerProcess
import scrapy

class CustomMiddleware(object):
.... custom middleware definition

settings = {'LOG_LEVEL' :'INFO',
            'COOKIES_ENABLED' : False,
            'DOWNLOADER_MIDDLEWARES' : {
            'update.CustomMiddleware': 400,
            }
            }

class CarvanaSpider(scrapy.Spider)
... Spider definition

process = CrawlerProcess(settings)
process.crawl(CarvanaSpider)
process.start()

该脚本返回错误:"没有名为'更新'"

的模块

如果我将Custom.CustomMiddleware替换为CustomMiddleware,则返回'不是有效路径'

我知道get_project_settings()实用程序,但我的脚本不能在项目文件夹中,并且必须能够在没有任何其他文件的情况下运行。

这是否可以实现?,如果是这样,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您需要单独的中间件文件并在脚本之上导入中间件。

CustomMiddleware(object)类: ....自定义中间件定义

该课程将在middleware.py

,并且在设置中只能这样添加

routes

以及Middleware.py和您都在同一目录中编写脚本。