На чем писать паука?

Статус
В этой теме нельзя размещать новые ответы.
Для таких целей лучше возьмите выделенный сервер на месяц, и получите нормальный канал и нормальное железо. Добрасываете оперативки по максимуму. И на чем угодно - я обычно с php работаю - пишете своего паука. Вот как вы лишь собираетесь всю сеть домена обойти - я не представляю. Делать посимвольный перебор - у вас полжизни уйдет. Или вы имеете базу всех доменов?
 
Памяти вроде хватает на десктопе. Канал можно расширить. Пока работаю с мультикурлом на apache+php.
Свежий список доменов зоны ru лежит в открытом доступе.
 
Вообще есть такой скрипт SPHIDER - это абсолютно бесплатная поисковая машина. Парсит вроде быстро, особенно если у хостинга хороший канал)
Есть куча настроек и т.п. Правда не работает с UTF-8, но я его допилил для этого. Мануал Для просмотра ссылки Войди или Зарегистрируйся
 
Решал вопрос по проходу по списку морд около 1 млн выдавал в час с PHP + multyCurl. Можно ли было быстрее? Наверное да, но подозреваю не на порядок, а просто незначительно ускорить процесс. Плюс, можно же разбивать на несколько машин...
 
На любом более-менее современном железе задача будет упираться в скорость интернета, а не в производительность компа. Соответственно нету никакой разницы писать на пхп, с++, или чем-то еще - для средней страницы картина будет похожа на: 2с на скачать станицу, 0.1 мс на обработку (или 0.09 мс если потратить на месяц больше на разработку, и оптимизировать все что можно).

Вообще для лучшей скорости нужно смотреть в сторону одновременного запуска на многих компах - например поднять на час на aws 100 микро инстансов, цена на t1.micro сейчас 0.003 бакса в час, с-но 100 компов будут стоить 0.3 бакса в час, трафик лень считать. Потом использовать gearman или sqs чтобы раздавать им всем задания. Прочекать за 1 час 5 млн сайтов и вырубить компы.
 
На любом более-менее современном железе задача будет упираться в скорость интернета, а не в производительность компа. Соответственно нету никакой разницы писать на пхп, с++, или чем-то еще - для средней страницы картина будет похожа на: 2с на скачать станицу, 0.1 мс на обработку (или 0.09 мс если потратить на месяц больше на разработку, и оптимизировать все что можно).
Для просмотра ссылки Войди или Зарегистрируйся - даже в пределах одного языка разница в скорости парсинга, в зависимости от используемых библиотек, может отличатся в 10 раз. В зависимости от выбранного ЯП разница может быть в 100 и более раз. Плюс важный параметр - утечки памяти:
http://habrahabr.ru/post/163979/ написал(а):
Занятно. Bsoup4 и html5lib под PyPy заняли по 5Гб памяти после 1000 итераций по 1Мб файлу.
На 5 млн сайтов такой парсер упадёт по лимиту памяти даже на самом крутом ПК.

Вообще для лучшей скорости нужно смотреть в сторону одновременного запуска на многих компах - например поднять на час на aws 100 микро инстансов, цена на t1.micro сейчас 0.003 бакса в час, с-но 100 компов будут стоить 0.3 бакса в час, трафик лень считать. Потом использовать gearman или sqs чтобы раздавать им всем задания. Прочекать за 1 час 5 млн сайтов и вырубить компы.
Очень хороший и правильный подход, только специалистов, которые это смогут настроить хотя бы в течении рабочего дня, очень мало ;)
 
Для просмотра ссылки Войди или Зарегистрируйся - даже в пределах одного языка разница в скорости парсинга, в зависимости от используемых библиотек, может отличатся в 10 раз.

Не факт, что оп не обойдется регулярками, ну и да, надо юзать любой биндинг к libxml, который есть в каждом языке. Если уж у кодера образование позволяет юзать какой-то beautifulsoup и думать о производительности, то он напишет херовый медленный код на любом языке)
 
в обсуждении не затрагивается еще один момент, если вы в течении часа-двух обходите 5 млн сайтов, то это, как минимум, 5млн обращений к DNS серверу, если они все идут с одного IP на паблик или dns провайдера, то достаточно реально получить за это бан, в варианте с aws эта проблема значительно меньше
 
Не рассматривали варианты на Python? В особенности Grab (Spider). Я не к тому, что это решает ваш вопрос. Просто один из вариантов, потому как скорость парсинга на разных библиотеках реально отличается
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху