Если вы действительно говорите о большом масштабе, то вам, вероятно, понадобится что-то, что позволяет масштабировать по горизонтали, например, фреймворк Map-Reduce, например Hadoop . Вы можете писать задания Hadoop на нескольких языках, поэтому вы не привязаны к Java. Вот, например, статья о написании заданий Hadoop на Python . Кстати, это, вероятно, тот язык, который я бы использовал, благодаря таким библиотекам, как httplib2
для выполнения запросов и lxml
для анализа результатов.
Если фреймворк Map-Reduce является излишним, вы можете оставить его на Python и использовать многопроцессорность
.
ОБНОВЛЕНИЕ:
Если вам не нужна инфраструктура MapReduce и вы предпочитаете другой язык, ознакомьтесь с ThreadPoolExecutor
в Java. Я бы определенно использовал HTTP-клиент Apache Commons. Собственно JDK гораздо менее удобен для программистов.
Я делаю нечто подобное, используя Java с библиотекой HttpClient Commons. Хотя я избегаю парсера DOM, потому что ищу конкретный тег, который можно легко найти из регулярного выражения.
Самая медленная часть операции - выполнение HTTP-запросов.