使用scrapy runspider命令时如何使用中间件?
How to use middlewares when using scrapy runspider command?
我知道当我们有一个scrapy项目时,我们可以在settings.py
中配置中间件。
我没有启动过scrapy项目,我使用运行spider命令来运行 spider,但是我想使用一些中间件。如何在蜘蛛文件中设置?
所以,问题是,当你 运行 使用 scrapy runspider my_file.py
的蜘蛛时,你可以使用 -s
选项来仅传递简单的标量蜘蛛设置(如字符串或整数) .问题是,SPIDER_MIDDLEWARES
设置需要一个字典,并没有真正直接的方法通过命令行传递它。
目前,我知道在没有项目的情况下为蜘蛛设置 SPIDER_MIDDLEWARES 设置的唯一方法是使用自定义蜘蛛设置,目前在 Scrapy from the code repo (not officially released yet) since 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,
}
}
...
或者,如果您将中间件 class 放在同一个文件中,您可以使用:
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,
}
}
...
我知道当我们有一个scrapy项目时,我们可以在settings.py
中配置中间件。
我没有启动过scrapy项目,我使用运行spider命令来运行 spider,但是我想使用一些中间件。如何在蜘蛛文件中设置?
所以,问题是,当你 运行 使用 scrapy runspider my_file.py
的蜘蛛时,你可以使用 -s
选项来仅传递简单的标量蜘蛛设置(如字符串或整数) .问题是,SPIDER_MIDDLEWARES
设置需要一个字典,并没有真正直接的方法通过命令行传递它。
目前,我知道在没有项目的情况下为蜘蛛设置 SPIDER_MIDDLEWARES 设置的唯一方法是使用自定义蜘蛛设置,目前在 Scrapy from the code repo (not officially released yet) since 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,
}
}
...
或者,如果您将中间件 class 放在同一个文件中,您可以使用:
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,
}
}
...