有没有办法为每个蜘蛛使用单独的 scrapy 管道?

2024-02-29

我想获取不同域下的网页,这意味着我必须在命令“scrapycrawlmyspider”下使用不同的蜘蛛。但是,由于网页内容不同,我必须使用不同的管道逻辑将数据放入数据库。但对于每个蜘蛛来说,它们必须经历在 settings.py 中定义的所有管道。是否有其他优雅的方法为每个蜘蛛使用单独的管道?


ITEM_PIPELINES设置是在引擎启动期间为项目中的所有蜘蛛程序全局定义的。每个蜘蛛都不能动态更改它。

以下是一些需要考虑的选项:

  • 更改管道代码。跳过/继续处理蜘蛛返回的项目process_item您的管道的方法,例如:

    def process_item(self, item, spider): 
        if spider.name not in ['spider1', 'spider2']: 
            return item  
    
        # process item
    
  • 改变你开始爬行的方式。做吧从脚本 http://doc.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script,根据作为参数传递的蜘蛛名称,覆盖您的ITEM_PIPELINES通话前设置crawler.configure().

也可以看看:

  • 好斗的。开始爬行后如何更改蜘蛛设置? https://stackoverflow.com/questions/10543997/scrapy-how-to-change-spider-settings-after-start-crawling
  • 我可以使用蜘蛛特定的设置吗? https://groups.google.com/forum/#!msg/scrapy-users/Uzj519saPXQ/u_lOaIh6LcsJ
  • 使用一个 Scrapy 蜘蛛处理多个网站 https://stackoverflow.com/questions/2396529/using-one-scrapy-spider-for-several-websites
  • 相关答案 https://stackoverflow.com/a/6502863/771848

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法为每个蜘蛛使用单独的 scrapy 管道? 的相关文章

随机推荐