使用scrapy runspider命令时如何使用中间件?
我知道我们可以在使用scrapy runspider命令时如何使用中间件?,scrapy,Scrapy,我知道我们可以在settings.py中配置中间件,当我们有一个scrapy项目时 我还没有启动一个scrapy项目,我使用runspider命令来运行spider,但我想使用一些中间件。如何在spider文件中设置它?因此,问题是,当您使用scrapy runspider my_file.py运行spider时,您可以使用-s选项仅传递简单的标量spider设置(如字符串或整数)。问题是,SPIDER\u middleware设置需要一个字典,而没有一个真正直接的方法通过命令行传递它 目前,我
settings.py
中配置中间件,当我们有一个scrapy项目时
我还没有启动一个scrapy项目,我使用runspider命令来运行spider,但我想使用一些中间件。如何在spider文件中设置它?因此,问题是,当您使用
scrapy runspider my_file.py
运行spider时,您可以使用-s
选项仅传递简单的标量spider设置(如字符串或整数)。问题是,SPIDER\u middleware
设置需要一个字典,而没有一个真正直接的方法通过命令行传递它
目前,我所知道的为没有项目的SPIDER设置SPIDER\u中间件的唯一方法是使用自定义SPIDER设置,该设置目前在中提供(尚未正式发布)
如果您这样做,您可以将您的中间件放入一个文件middleware.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,
}
}
...
对于接近投票的选民:这是一个合法且有用的问题,请避免投票。我正试图使用相同的逻辑/设置来定义http代理中间件,如下所示:
custom_settings={'DOWNLOADER_middleware':{'scrapy.downloadermiddleware.httpproxy.httpproxymidleware':750}
然后在我的请求中使用request.meta['proxy']=“proxy ip:proxy port”调用它,生成请求
,但爬行器没有运行,并说:文件/usr/lib/python2.7/dist packages/twisted/internet/abstract.py”,第522行,在ISIPV6地址中,如果addr:TypeError:类型为“NoneType”的参数中的“%”不可编辑,我做错了什么
@user1991118请在发布您的蜘蛛代码时问一个新问题我已经问过了。在这里: