我知道当我们有scrapy项目时,我们可以在settings.py
中配置中间件。
我还没有启动scrapy项目,我使用runspider命令来运行spider,但我想使用一些中间件。如何在蜘蛛文件中设置它?
答案 0 :(得分:3)
因此,问题是,当您使用scrapy runspider my_file.py
运行蜘蛛时,您可以使用-s
选项仅传递简单的标量蜘蛛设置(如字符串或整数)。问题是,SPIDER_MIDDLEWARES
设置需要一个字典,并且没有一种非常简单的方法可以通过命令行传递它。
目前,我知道为没有项目的蜘蛛设置SPIDER_MIDDLEWARES设置的唯一方法是使用自定义蜘蛛设置,该设置目前在Scrapy from the code repo(尚未正式发布)中可用 Scrapy 1.0
如果你走这条路,你可以将中间件放在middlewares.py
文件中并执行:
import middlewares # need this, or you get import error
class MySpider(scrapy.Spider):
name = 'my-spider'
custom_settings = {
'SPIDER_MIDDLEWARES': {
'middlewares.SampleMiddleware': 500,
}
}
...
或者,如果您将中间件类放在同一个文件中,则可以使用:
import scrapy
class SampleMiddleware(object):
# your middleware code here
...
def fullname(o):
return o.__module__ + "." + o.__name__
class MySpider(scrapy.Spider):
name = 'my-spider'
custom_settings = {
'SPIDER_MIDDLEWARES': {
fullname(SampleMiddleware): 500,
}
}
...