@lesh_a

Как парсить большое количество сайтов?

Нужно парсить большое количество сайтов (около 30-50к). В начале я выбрал для этих целей мультикурл, сам написал пару классов, проверил на небольшом количестве файлов, все было ок, но как только попытался запустить на большем количестве сайтов(где-то 300-1000) начинались какие-то проблемы. Первые сайты обрабатывались, а остальная часть просто не загружалась. Причем если взять те сайты которые не загрузились и запустить отдельно, то они нормально отрабатывали. В самописных классах не было системы для отображения ошибок, поэтому не знал в чем дело толком.
Дальше переписал все с помощью этой библиотеки , которая использует ReactPHP и парсинг по DOM-структуре. По времени работает так же, но опять та же проблема, после н-го количества сайтов перестает работать. Тут есть система ошибок, вот что пишет: Connection to XXX:80 failed during DNS lookup: DNS query for XXX failed: too many retries.
Запускаю сайты с этой ошибкой отдельно - все отрабатывает.
Подскажите пожалуйста, что не так и как выйти из этой ситуации?
Код примерно такой:
$client = new Browser($loop, $connector);
$parser = new \app\VersionParser($client, $loop);
$parser->parse($urls);

$loop->run();
  • Вопрос задан
  • 288 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
Scrapy

для пыха встречал краулер лет 5 назад, наверно, и сейчас есть

DNS query for XXX failed: too many retries.

пропускай и переходи к следующему, можешь кеширующий сервер поставить с 8ю вверху общеизвестными мощными (гугл, CF, яндекс, хурррикан)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы