Вопрос опытным Python'щикам и Scrapy'рам?
Используйте GRAb. 
Вопросы какие-то странные у Вас. Все зависит от структуры сайта который парсите. 
Поведение вашего паука зависит только от того куда вы сами его направите.
В вашем примере нужно написать всего 3 таска:
 1. Парсим категории
 2. Парсим категорию на подкатегории
 3. Парсим данные подкатегории.
Почему это удобно в 1 файл? Да потому что все это взаимосвязано.
Запускаем паука, он запускает таск1 и передает категории в таск2. 
Таск2 парсит подкатегории и передает в таск3.
По поводу скорости, тут все зависит только от сайта который парсите. Мой паук в 200 потоков легко спарсил 5млн страниц менее чем за час.
Кстати у меня возник такой вопрос. А как можно делать запросы на встроенный поисковик в самом сайте. При запросе например азб, выдается список где присутствуют более близкие варианты с этим наименованием но ограниченно только 50 позиций. Как настроить запросы на этот поисковик чтобы прошелестить всю базу. Так же проблема в том что в браузере при вводе запроса внутренний поисковик ищет запрос примерно 2-5 сек.