code: def find_scraperclasses(comic, multiple_allowed=False):
      
      if not comic:
          raise ValueError("empty comic name")
      candidates = []
      cname = comic.lower()
      for scraperclass in get_scraperclasses():
          lname = scraperclass.getName().lower()
          if lname == cname:
              # perfect match
              if not multiple_allowed:
                  return [scraperclass]
              else:
                  candidates.append(scraperclass)
          elif cname in lname:
              candidates.append(scraperclass)
      if len(candidates) > 1 and not multiple_allowed:
          comics = ", ".join(x.getName() for x in candidates)
          raise ValueError('multiple comics found: %s' % comics)
      elif not candidates:
          raise ValueError('comic %r not found' % comic)
      return candidates
docs: Get a list comic scraper classes. Can return more than one entries if
      multiple_allowed is True, else it raises a ValueError if multiple
      modules match. The match is a case insensitive substring search.