title: Instantiate multiple spiders from a single class in Scrapy
body: <p>In the interest of saving time and lines of repeated code on a very large project, I have been attempting to instantiate multiple spiders in Scrapy from a single class definition. I don't find in the docs that this is a standard practice, but I also don't find any indication that it cannot or should not be done. However, it is not working. Here is what I'm trying:</p>
  
  <pre><code>from scrapy.spider import CrawlSpider
  
  class ExampleSpider(CrawlSpider):
  
      def __init__(self, name, source, allowed_domains, starturls):
          self.name = name
          self.custom_settings = {'LOG_FILE':'logs/' + name + '.txt' }
          self.source = source
          self.allowed_domains = allowed_domains   
          self.start_urls = starturls
          self.rules = ( Rule(LinkExtractor(allow=''), callback='parse_item', follow=True),) 
  
       def parse_item(self, response):
          # do stuff here
  
  SpiderInstance = ExampleSpider (
    'columbus',
    'Columbus Symphony',
    'columbussymphony.com',
   [ 'http://www.columbussymphony.com/events/'],  
  ) 
  </code></pre>
  
  <p>The error I get is :</p>
  
  <pre><code>During handling of the above exception, another exception occurred:
  
  Traceback (most recent call last):
    File "/Library/Frameworks/Python.framework/Versions/3.6/bin/scrapy", line 11, in &lt;module&gt;
  sys.exit(execute())
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/cmdline.py", line 150, in execute
  _run_print_help(parser, _run_command, cmd, args, opts)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/cmdline.py", line 90, in _run_print_help
  func(*a, **kw)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/cmdline.py", line 157, in _run_command
  cmd.run(args, opts)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/commands/crawl.py", line 57, in run
  self.crawler_process.crawl(spname, **opts.spargs)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/crawler.py", line 170, in crawl
  crawler = self.create_crawler(crawler_or_spidercls)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/crawler.py", line 198, in create_crawler
  return self._create_crawler(crawler_or_spidercls)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/crawler.py", line 202, in _create_crawler
  spidercls = self.spider_loader.load(spidercls)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scrapy/spiderloader.py", line 71, in load
  raise KeyError("Spider not found: {}".format(spider_name))
  KeyError: 'Spider not found: columbus'
  </code></pre>
  
  <p>Is it possible to use Scrapy this way, and if so, what am I doing incorrectly?</p>