Быстрый поисковый робот в Интернете

Я бы хотел провести интеллектуальный анализ данных в большом масштабе. Для этого мне нужен быстрый краулер. Все, что мне нужно, это загрузить веб-страницу, извлечь ссылки и рекурсивно переходить по ним, но без двойного посещения одного и того же URL-адреса. В принципе, я хочу избежать зацикливания.

Я уже написал краулер на питоне, но он слишком медленный. Я не могу насытить им 100-мегабитную линию. Максимальная скорость ~ 40 urls / sec. и почему-то трудно добиться лучших результатов. Похоже, проблема с многопоточностью / сокетами python. У меня также возникли проблемы с сборщиком мусора Python, но это было решаемо. Между прочим, центральный процессор не является узким местом.

Итак, что мне следует использовать, чтобы написать поискового робота, который работает как можно быстрее, и как лучше всего избежать зацикливания при сканировании?

РЕДАКТИРОВАТЬ: Решением было объединить многопроцессорность и потоки модулей. Для наилучшего эффекта создайте несколько процессов с несколькими потоками для каждого процесса. Создание нескольких потоков в одном процессе неэффективно, и несколько процессов с одним потоком потребляют слишком много памяти.

8
задан Anony-Mousse 14 October 2012 в 13:34
поделиться