Я бы не использовал ни один из инструментов, которые вы упомянули.
Вам нужно нарисовать диаграмму высокого уровня (мне нравится карандаш и бумага).
Я бы спроектировал систему, в которой разные модули выполняли бы разные функции, было бы целесообразно спроектировать это так, чтобы у вас могло быть много экземпляров каждого модуля, работающего параллельно.
Я бы подумал об использовании нескольких очередей для
- URL для сканирования
- Просканированные страницы из Интернета
- Извлеченная информация на основе шаблонов и бизнес-правил
- Разобранные результаты
- нормализованные и отфильтрованные результаты
У вас были бы простые (возможно, из командной строки без пользовательского интерфейса) программы, которые считывали бы данные из очередей и вставляли данные в одну или несколько очередей (Crawler отправлял бы оба "URL-адреса для сканирования" и "Просканированные страницы из Интернета" ), вы можете использовать:
- Веб-сканер
- экстрактор данных
- Парсер
- нормализатор и фильтр
Они будут помещаться между очередями, и вы можете запустить множество их копий на отдельных компьютерах, что позволит масштабировать их.
Последняя очередь может быть передана другой программе, которая фактически отправляет все в базу данных для фактического использования.