@tmWorker

Как оптимизировать процесс парсинга данных с веб-сайтов?

У меня есть несколько сайтов с которых нужно постоянно парсить данные.

Например, у меня есть 20 сайтов, когда последний сайт обработан парсером, нужно начинать с начала. Вопрос в том, как наилучшим образом сделать это в PHP? Потому что я новичок в этом и опыта в этом никакого...

Я боюсь ситуации, когда сервер будет перегружен, или скрипт парсинга (процесс) будет случайно остановлен ... Как наилучшим образом справиться с этими ситуациями?

Любые абстрактные советы найдутся?
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 5
gobananas
@gobananas
botbot.ru
Когда сайт конкретный парсится в начале процесса ставится в БД отметка что он начал парсится, т.е. 1, например, когда парсер закончил, то ставится 0. Т.е. нельзя парсить другой сайт пока у какого-то стоит отметка 1. Сайт тоже внутри разбивается на кусочки каждый если большой что бы не парсилось по 20 тыс. ссылок за 1 проход, а парсилось например 20 раз по 1000.
Ответ написан
hOtRush
@hOtRush
Берешь любую балалайку для очереди вроде beanstalkd или gearman, пишешь какой-то главный скрипт, который запускает парсинг с входной точки (первой страницы или страниц), ссылки извлеченные из нее добавляются в эту же очередь и где-то сохраняются для блэклистинга (чтобы не парсились дважды). Примерно так работает scrapy
Ответ написан
serg_small_developer
@serg_small_developer
Начинающий прогер
по своему опыту могу сказать что если сайты небольшие то на пыхе еще можно делать, но для больших сайтов нужно что-то другое, лично я выбрал для такого дела python+scrapy
Ответ написан
JabbaHotep
@JabbaHotep
Пытаюсь минимизировать ручную работу
Ну тут все просто, делаете очередь в базе из 20 записей, каждый раз когда переходите к новому сайту, запрашиваете одну запись отсортированную по дате последнего обновления, парсите сайт, по окончании апдейтите дату обновления для записи, и забираете следующую запись.
Ну и соответственно если сервер перегрузят или остановят парсер, при перезапуске он всегда возьмет следующий сайт.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы