Общий подход заключается в том, чтобы разделить задачи сканирования и загрузки на отдельные рабочие потоки с максимальным количеством потоков в зависимости от требований к памяти (т. Е. Максимального объема оперативной памяти, который вы хотите использовать для хранения всей этой информации).
Однако crawler4j уже предоставляет вам эту функциональность.Разделяя загрузку и обход на отдельные потоки, вы пытаетесь максимально использовать ваше соединение, сбрасывая столько данных, сколько может обработать ваше соединение и как серверы, предоставляющие информацию, могут вас отправить.Естественным ограничением является то, что, даже если вы создаете 1000 потоков, если серверы предоставляют вам контент только с частотой 0,3 Кбит / с, это все равно всего 300 КБ в секунду, которые вы будете загружать.Боюсь, вы просто не можете контролировать этот аспект.
Другой способ увеличить скорость - запустить гусеничный механизм в системе с более толстым каналом в Интернет, посколькуя полагаю, что ваша максимальная скорость загрузки ограничивает скорость получения данных в настоящее время.Например, если вы выполняете сканирование на экземпляре AWS (или на любой из платформ облачных приложений), вы выиграете от их чрезвычайно высокоскоростных подключений к магистральным линиям и сократите время, необходимое для сканирования коллекции веб-сайтов путемэффективно расширяя свою пропускную способность, намного превышающую то, что вы собираетесь получить в домашнем или офисном соединении (если только вы не работаете с интернет-провайдером).При этом ограничение начинает становиться максимальной скоростью записи вашего диска для любых данных, которые вы сохраняете в локальном (или сетевом) дисковом хранилище.