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