не будет самым коротким, но я должен был попробовать что-то... Строка C#
[] f = новая строка [0]; Основной (f);
бит короче
static void Main(){Main();}
Вы можете использовать MapReduce , как это делает Google, либо через Hadoop (в частности, с Python: 1 и 2) ), Disco или Happy .
Традиционный образ мышления - напишите свою программу на стандартном Python, если вы обнаружите, что она слишком медленная, профилируйте его и оптимизируйте конкретные медленные участки. Вы можете ускорить эти медленные участки, перейдя на C, используя C / C ++ расширения или даже ctypes .
Если вы просматриваете только один сайт, рассмотрите возможность использования wget -r
( пример ).
Где вы храните результаты? Вы можете использовать облачную библиотеку PiCloud , чтобы легко распараллелить парсинг на кластере серверов.
Обращать внимание на чей-то сайт с миллионами запросов - не очень вежливо. Можете ли вы вместо этого попросить у веб-мастера архив сайта? После того, как он у вас есть, это простой вопрос поиска текста.
Вы тратите много времени на ожидание сетевых запросов при работе с пауками, поэтому вы обязательно захотите направлять свои запросы параллельно. Я бы, вероятно, сохранил данные результатов на диск, а затем второй процесс перебирал бы файлы, ищущие термин.
Поскольку вы новичок в Python, я думаю, что следующее может быть полезно для вас:)
Что сказал Адам. Я сделал это однажды, чтобы составить карту сети Ксанги. Я сделал это быстрее, используя потокобезопасный набор, содержащий все имена пользователей, которые мне приходилось искать. Затем у меня было около 5 потоков, одновременно выполняющих запросы и обрабатывающих их. Вы собираетесь потратить гораздо больше времени на ожидание страницы для DL, чем на обработку любого текста (скорее всего), поэтому просто найдите способы увеличить количество запросов, которые вы можете получить одновременно.