Regras dinâmicas baseadas em start_urls para Scrapy CrawlSpider?

Estou escrevendo um raspador Scrapy que usa o CrawlSpider para rastrear sites, revisar os links internos e raspar o conteúdo de qualquer link externo (links com um domínio diferente do domínio original).

Consegui fazer isso com duas regras, mas elas são baseadas no domínio do site que está sendo rastreado. Se eu quiser executar isso em vários sites, encontro um problema porque não sei em qual "start_url" estou atualmente, por isso não posso alterar a regra adequadamente.

Aqui está o que eu criei até agora, ele funciona em um site e não sei como aplicá-lo a uma lista de sites:

class HomepagesSpider(CrawlSpider):
    name = 'homepages'

    homepage = 'http://www.somesite.com'

    start_urls = [homepage]

    # strip http and www
    domain = homepage.replace('http://', '').replace('https://', '').replace('www.', '')
    domain = domain[:-1] if domain[-1] == '/' else domain

    rules = (
        Rule(LinkExtractor(allow_domains=(domain), deny_domains=()), callback='parse_internal', follow=True),
        Rule(LinkExtractor(allow_domains=(), deny_domains=(domain)), callback='parse_external', follow=False),
    )

    def parse_internal(self, response):

        # log internal page...

    def parse_external(self, response):

        # parse external page...

Provavelmente, isso pode ser feito passando o start_url como argumento ao chamar o raspador, mas estou procurando uma maneira de fazer isso de forma programática no próprio raspador.

Alguma ideia? Obrigado!

Simon.