scrapy自定义命令、中间件、自定扩展、去重

发布时间 2023-10-26 22:46:46作者: 冰底熊

一、自定义命令

1.不用在命令窗口 敲命令,通过py文件执行爬虫程序。

(1)在项目配置文件scrapy.cfg同级目录下创建一个start.py 文件。

  

(2)在start.py 文件中写入以下代码:

from scrapy.cmdline import execute

execute(['scrapy','crawl','xiahua',"--nolog"])

2. 自定义命令

  • 在spiders同级创建任意目录,如:commands
  • 在其中创建 crawlall.py 文件 (此处文件名就是自定义的命令)

crawlall.py文件中:

from scrapy.commands import ScrapyCommand

from scrapy.utils.project import get_project_settings


class Command(ScrapyCommand):

    requires_project = True

    def syntax(self):

        return '[options]'

    def short_desc(self):
        return  'Run all of the spiders'

    def run(self, args, opts):

        spider_list=self.crawler_process.spiders.list()
        for name in spider_list:
            self.crawler_process.crawl(name,**opts.__dict__)

        self.crawler_process.start()
  • settings.py 中添加配置 COMMANDS_MODULE = '项目名称.目录名称'
  • #自定义命令
    # COMMANDS_MODULE = '项目名称.目录名称'
    COMMANDS_MODULE = 'XiaoHua.commands'
  • 在项目目录执行命令:scrapy crawlall