Как сделать «фоновый» парсинг?

Здравствуйте, использую для парсинга «simple html dom» (php), парсить в дальнейшем необходимо будет сайтов 10. При загрузке страницы, проходит довольного много времени пока вся информация подгрузится и страница отобразится. Если парсить 1-2 сайта еще терпимо, но если брать больше — худо дело будет. Я подумал о том, что было бы не плохо парсить данные, с периодичностью раз в 10-20 минут (необходимая мне информация часто обновляется), и сохранять это все в БД.
Подскажите, пожалуйста, как это лучше всего реализовать? Подойдет ли для этой задачи «cron» или существуют более «правильные» методы?
  • Вопрос задан
  • 4060 просмотров
Пригласить эксперта
Ответы на вопрос 3
alekciy
@alekciy
Вёбных дел мастер
Что бы парсер сам запускался подходит cron. Но как я понимаю суть вопроса в другом: "как быстро парсить ХХ сайтов". Мультипоточно. mCurl в помощь.

Для ориентирования по скорости приведу используемую мной схему. У меня почти 42 000 URL на проверке. Перед началом работ они складываются в Redis в виде стека (что бы потом параллельные потоки не скачали одну и туже страницу несколько раз). После чего по cron через bash запускается 10 php скриптов, каждый за раз качает 100 адресов, парсит данные со страницы через DOM, полученные данные пишет в базу. Т.е. кроме скачки страниц тут еще и медленные операции как то построение DOM и запись в РСУБД. На все уходит менее 20 минут, т.е. минимальная скорость около 30 страниц/сек.
Ответ написан
croupier
@croupier
В фоне конечно кроном, а так, я бы заменил simple html dom на https://github.com/rmccue/Requests + code.google.com/p/phpquery, вроде было про них и на хабре. Если вы хотя бы поверхностность знакомы с python, то там есть очень удобная штука для парсинга grab
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Крон и есть самый правильный метод.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы