1 JRazor
1. Оригинальная идея
2. Сарафанное и прочие разновидности радиотехники
3. ???
4. PROFIT!!!

Зачем раскручивать то, что и само неплохо пиарится?
1 JRazor
Мне кажется это мы должны спросить у вас: "А можете ли вы предоставлять услуги по ремонту?". Ответ на этот вопрос и будет ответом на ваш.
JRazor Решение
Уже понял, что реактор не нужно перезапускать. Нужно запускать один реактор. Решилось все следующим образом:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from scrapy.crawler import Crawler
from scrapy.utils.project import get_project_settings
from twisted.internet import reactor

# Импортирем пауков
from spiders.newenglandfilm import NewenglandFilm
from spiders.mandy import Mandy
from spiders.productionhub import ProductionHub
from spiders.craiglist import Craiglist

from spiders.my_settings import options

# Передаем настройки
settings = get_project_settings()
settings.overrides.update(options)

# Запускаем четыре паука по очереди
crawler = Crawler(settings)
crawler.configure()
crawler.crawl(NewenglandFilm())
crawler.start()

crawler = Crawler(settings)
crawler.configure()
crawler.crawl(Mandy())
crawler.start()

crawler = Crawler(settings)
crawler.configure()
crawler.crawl(ProductionHub())
crawler.start()

crawler = Crawler(settings)
crawler.configure()
crawler.crawl(Craiglist())
crawler.start()

# Запускаем реактор
reactor.run()
3 JRazor
Сначала пишите для себя. Пробуйте решать задачи, играться с разными GUI, базами данных и прочими кошерными вещами. Потом можете попробовать пофрилансить. Опыт + заработок. Я не знаю, насколько это поможет при устройстве на работу (тут все зависит от компании), но писать более-менее нормальный код рано или поздно научитесь. Опыт должен быть не в вашей трудовой книге, а в вашей трудовой голове. Сразу говорю - сам в организации не работал программистом Python (не повезло с городом), но писать научился.

А лучше, конечно же, стараться и выбиться в джуниоры. Там вас всему научат)
Странно, что никто не упомянул XPath.
Тут более понятно.
1 JRazor
Голова не работает после рабочего дня, но помоему можно попробовать что-то такое:

for num in range(0, 4):
    while b[num] <= e[num]:
        # yield
        b[num] += 1
        if b[num] <= e[num]:
            b[num + 1] = beggining[num + 1]

Скорее всего, код с ошибками. Также под вопросом и "упрощение функции".

И постарайтесь именовать переменные более читаемо.
В Python 3 можно сравнить, к примеру, так:

>>> not 1
False
>>> not 0
True


Или явно проверить ссылку на объект:
>>> 1 is None
False


Булевы значения:
>>> bool(1)
True
>>> bool(0)
False
1 JRazor Решение
У вас не скрипт, а демонстрация unpythonic стиля. Сколько раз повторять - не используйте вы переменные m, n и прочее. В каждом учебнике уже пишут это. Как можно читать ваш код? Да никак!

По сабжу: не проще просто парсить каждую n-ую строку? Удаление лишнего RegExp'ом? Деление в список по "\n" и выборка только субтитров?
2 JRazor
Посмотрите "Прохоренок Н.А. - PyQt. Создание оконных приложений на Python 3 (2011)"
JRazor Решение
Вопрос решен и закрыт.

Проблема была в PATH. Решение:
os.environ['PATH'] += ";C:\Program Files\Mercurial" # В моем случае - os.getcwd()