@theSever

Чем пропарсить несколько миллионов доменов?

Нужно пропарсить порядочное количество сайтов и собрать с них инфу (только морды), проблема в том что большинство софта жутко, жутко медленно пашет. Чем можно решить данную проблему, парсер в стиле ниндзя или софт с распределенным парсингом?
  • Вопрос задан
  • 400 просмотров
Пригласить эксперта
Ответы на вопрос 4
Jump
@Jump
Системный администратор со стажем.
Да чем угодно. уж не знаю что там может тормозить.
Я обычно на питоне делаю, хотя такая элементарная задача решается на любом языке.
Понятное дело что если хотите очень больших скоростей - желательно делать не в один поток и не с одной машины.

Простая математика:
По количеству-
Допустим средняя страница будет отдаваться за 1секунду - какие-то значительно быстрее, какие-то дольше, но в среднем 1сек.
В итоге за час 3600доменов, за сутки 86,4тыс доменов - все обойдете за 65дней.
Надо быстрее? - Запускате в несколько потоков.
Хотите за сутки - 65 потоков и будет вам за сутки.
По объему -
Средний вес веб страницы сейчас около 2мб.
Если вы будете собирать по одной странице в секунду вам надо быть готовым прокачать 2мегабайта в секунду, т.е минимальная скорость подключения 16мегабит в секунду.
Если вы будете работать в 65потоков, и собирать 65 страниц в секунду, надо быть готовым прокачивать 130мегабайт в секунду, т.е минимальная скорсоть подключения гигабит в секунду.

Стабильный гигабит вам дадут только в ДЦ и то не факт, на домашнем тарифе маловероятно такое получить. Поэтому вести парсинг желательно с нескольких мест с хорошим линком, если есть требования по времени.
Ну и общий объем сохраненных данных будет в среднем около 0,3террабайта.
Это конечно если с картинками.
Если тащить чисто текст - все гораздо веселее, раз этак в 50.


А вообще все зависит от конкретных требований и возможностей - что тащить со страницы, нужна ли гарантия обхода каждой страницы, время за которое нужно делать обход, бюджет на расходы.
Ответ написан
Комментировать
sim3x
@sim3x
Однострочник на bash + parallel + wget/curl

И dns сервер локально поставить
Ответ написан
riky
@riky
Laravel
делал тупо на ноде такое.
все *.RU домены (5,5 млн) за несколько суток.
Ответ написан
kopceak
@kopceak
Python + Celery + ElasticSearch
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект