有一个令人毛骨悚然的项目,其中包含多个spider。我有什么方法可以定义为哪个spider使用哪个管道?并非我定义的所有管道都适用于每个spider。
在Pablo Hoffman的解决方案的基础上,你可以在process_itemPipeline
对象的方法上使用以下装饰器,以便它检查pipeline
你的Spider属性是否应执行。例如:
def check_spider_pipeline(process_item_method):
@functools.wraps(process_item_method)
def wrapper(self, item, spider):
# message template for debugging
msg = '%%s %s pipeline step' % (self.__class__.__name__,)
# if class is in the spider's pipeline, then use the
# process_item method normally.
if self.__class__ in spider.pipeline:
spider.log(msg % 'executing', level=log.DEBUG)
return process_item_method(self, item, spider)
# otherwise, just return the untouched item (skip this step in
# the pipeline)
else:
spider.log(msg % 'skipping', level=log.DEBUG)
return item
return wrapper
为了使此装饰器正常工作,蜘蛛程序必须具有管道属性,其中包含要用于处理项目的管道对象的容器,例如:
class MySpider(BaseSpider):
pipeline = set([
pipelines.Save,
pipelines.Validate,
])
def parse(self, response):
# insert scrapy goodness here
return item
然后在一个pipelines.py
文件中:
class Save(object):
@check_spider_pipeline
def process_item(self, item, spider):
# do saving here
return item
class Validate(object):
@check_spider_pipeline
def process_item(self, item, spider):
# do validating here
return item
所有Pipeline对象仍应在ITEM_PIPELINES中的设置中进行定义(以正确的顺序进行更改-这样很好,以便可以在Spider上指定顺序)。
我正在从事两个不同的项目,都使用不同的maven文件 当我在项目之间切换时,它会重新下载存储库文件夹中的所有maven依赖项,删除以前项目的依赖项 是否有任何方法可以使用两个,并为两个项目维护不同的存储库。
我有一个稳定的颤振通道SDK,位于c:\flutter。它在系统环境变量中设置为Flutter的默认路径。 在IntelliJ中为我们的客户创建新的Flutter项目时,我使用了这条路径c:\flutter。 我还在c:\flutter_master下载了颤振主频道,我需要将此颤动SDK(主)用于另一个项目。 对于不同的项目,我如何才能在同一设备上正确拥有两个工作颤振版本,而无需每次都使用系统环境
问题内容: 我想在Django项目中有2个单独的管理站点。 我的意思是单独的-他们应该具有单独的用户身份验证,他们应该管理不同的模型,并且具有不同的外观和URL。 我想要这样做的原因是客户希望使用单独的部分来管理页面的CMS部分,并希望将其单独用作“后台”解决方案。 我考虑过只在项目树中创建一个od django.contrib.auth应用程序副本,以不同的方式命名它,并对两者使用单独的调用。这
由于在所述实体不可用的情况下返回,因此需要进行如上所示的条件测试,以避免可能的,否则很可能发生。在任何地方重复这个琐碎的条件测试都是非常不可接受和不鼓励的,这使得业务逻辑应该尽可能简单,几乎不可读。 为了防止这种条件检查到处重复,我在一个单独的EJB中有一个通用方法, 从另一个EJB内部调用此方法,如下所示, 在这里,尽管所有事情都发生在同一个事务中,返回,即返回的实体由两个EJB中的管理。 虽然
我正在使用java-8进行多个Spring boot项目,但现在其中一个需要转移到java-11。所以我需要在笔记本电脑上安装两个版本。那么如何在同一台机器上为不同的项目处理不同的JAVA版本呢?
问题内容: 可以将 Spark RDD 通过管道传输到Python吗? 因为我需要一个python库来对数据进行一些计算,但是我的主要Spark项目基于Scala。有没有办法将两者混合使用或让python访问相同的spark上下文? 问题答案: 实际上,您可以使用Scala和Spark以及常规Python脚本来传递到python脚本。 test.py 火花壳(scala) 输出量 你好约翰 你好林