【scrapy系列】自定义命令

scrapy有很多内置命令,
例如:

scrapy list:列出当前所有爬虫
scrapy version:查看scrapy版本

那么有没有遇到没有适合的命令呢,比如说你想查看所有爬虫以及对应的中文名称(毕竟都是中国人,英文不好的话就很难受),我也是在项目上遇到这个问题,所以就研究了下,做出了这个命令
我起名为names
执行命令:

scrapy names:列出所有的爬虫中英文名称
像这样的结果:
	common_detail:通用详情爬虫
	news_paper:新闻爬虫

那么这是怎么实现的呢?
首先创建一个names.py

# -*- coding=utf-8 -*-
from scrapy.commands import ScrapyCommand

class Command(ScrapyCommand):
    requires_project = True

    def short_desc(self):
        return '列出所有爬虫及其名称'

    def run(self, args, opts):
        spider_info = self.crawler_process.spiders._spiders
        for key, spider in spider_info.items():
            print("%s:%s" % (key, spider.zh_name))

想要使用这个命令的话,需要在scrapy的settings.py里面设置

COMMANDS_MODULE = '项目名.names'

这样就可以使用了,好了小伙伴们可以试试了

你可能感兴趣的:(scrapy,python,python,爬虫,scrapy)