История изменений
Исправление dimuska139, (текущая версия) :
Делал подобную задачу несколько лет назад. Реализовал таким образом:
- Для получения новых статей (новостей) проверял RSS сайтов (но нет никаких проблем вместо этого смотреть sitemap.xml) и брал оттуда список адресов страниц за последние несколько дней
- Реализовал шаблон проектирования «стратегия» с правилами парсинга для каждого сайта (стратегию по домену выбирал).
- Статью сразу публиковать не стоит (т.к. бывают косяки) - нужно в админке сделать возможность отклонять статьи (занося их URL в чёрный список) перед публикацией.
- Картинки надо скачивать к себе и в тексте статей подменять ссылки. Потому что если у тебя сайт с SSL, а ссылка на картинку http, то юзер в браузере будет видеть красный замок в адресной строке (ну или ещё как-то так будет отображаться ошибка SSL, не суть важно). Можно упростить задачу, если заюзать imgproxy, перед которым воткнуть Nginx, включив кеш картинок, но ссылки в текстах статей всё равно надо подменивать.
Алгоритм работы был следующим:
- Раз в сутки читал RSS всех сайтов, которые надо парсить, и выбирал оттуда ссылки статьи за последние несколько дней.
- Циклом проходил по полученному списку и проверял наличие адреса страницы в моей базе данных.
- Если адреса нет в таблице БД, то запускал парсинг, по домену выбирая нужную стратегию. Из HTML вырезал ненужные теги, скачивал к себе картинки, а в тексте статьи менял ссылки на них на свои.
- Сохранял статью в таблицу БД, не забыв сохранить адрес источника (в дальнейшем по нему определял, есть у меня такая статья или нет).
Сложность тут в том, что предусмотреть всё невозможно. HTML статей бывает кривым, более тогда иногда меняется. Иногда появляются новые блоки типа твиттер-виджета или рекламы - и из-за этого стратегии парсинга нужно регулярно обновлять, чтобы это всё корректно обрабатывать. Иногда в RSS попадает ссылка, которая редиректит хрен знает куда. То есть сделать и забыть тут не получится - придётся постоянно это дело поддерживать и допиливать. Также необходимо придумать способы обхода различных блокировок: разгадывать каптчу, юзать прокси и т.п.
Исправление dimuska139, :
Делал подобную задачу несколько лет назад. Реализовал таким образом:
- Для получения новых статей (новостей) проверял RSS сайтов (но нет никаких проблем вместо этого смотреть sitemap.xml) и брал оттуда список адресов страниц за последние несколько дней
- Реализовал шаблон проектирования «стратегия» с правилами парсинга для каждого сайта (стратегию по домену выбирал).
- Статью сразу публиковать не стоит (т.к. бывают косяки) - нужно в админке сделать возможность отклонять статьи (занося их URL в чёрный список) перед публикацией.
- Картинки надо скачивать к себе и в тексте статей подменять ссылки. Потому что если у тебя сайт с SSL, а ссылка на картинку http, то юзер в браузере будет видеть красный замок в адресной строке (ну или ещё как-то так будет отображаться ошибка SSL, не суть важно)
Алгоритм работы был следующим:
- Раз в сутки читал RSS всех сайтов, которые надо парсить, и выбирал оттуда ссылки статьи за последние несколько дней.
- Циклом проходил по полученному списку и проверял наличие адреса страницы в моей базе данных.
- Если адреса нет в таблице БД, то запускал парсинг, по домену выбирая нужную стратегию. Из HTML вырезал ненужные теги, скачивал к себе картинки, а в тексте статьи менял ссылки на них на свои.
- Сохранял статью в таблицу БД, не забыв сохранить адрес источника (в дальнейшем по нему определял, есть у меня такая статья или нет).
Сложность тут в том, что предусмотреть всё невозможно. HTML статей бывает кривым, более тогда иногда меняется. Иногда появляются новые блоки типа твиттер-виджета или рекламы - и из-за этого стратегии парсинга нужно регулярно обновлять, чтобы это всё корректно обрабатывать. Иногда в RSS попадает ссылка, которая редиректит хрен знает куда. То есть сделать и забыть тут не получится - придётся постоянно это дело поддерживать и допиливать. Также необходимо придумать способы обхода различных блокировок: разгадывать каптчу, юзать прокси и т.п.
Исходная версия dimuska139, :
Делал подобную задачу несколько лет назад. Реализовал таким образом:
- Для получения новых статей (новостей) проверял RSS сайтов (но нет никаких проблем вместо этого смотреть sitemap.xml) и брал оттуда список адресов страниц за последние несколько дней
- Реализовал шаблон проектирования «стратегия» с правилами парсинга для каждого сайта (стратегию по домену выбирал).
- Статью сразу публиковать не стоит (т.к. бывают косяки) - нужно в админке сделать возможность отклонять статьи (занося их URL в чёрный список) перед публикацией.
Алгоритм работы был следующим:
- Раз в сутки читал RSS всех сайтов, которые надо парсить, и выбирал оттуда ссылки статьи за последние несколько дней.
- Циклом проходил по полученному списку и проверял наличие адреса страницы в моей базе данных.
- Если адреса нет в таблице БД, то запускал парсинг, по домену выбирая нужную стратегию.
- Сохранял статью в таблицу БД, не забыв сохранить адрес источника (в дальнейшем по нему определял, есть у меня такая статья или нет).
Сложность тут в том, что предусмотреть всё невозможно. HTML статей бывает кривым, более тогда иногда меняется. Иногда появляются новые блоки типа твиттер-виджета или рекламы - и из-за этого стратегии парсинга нужно регулярно обновлять, чтобы это всё корректно обрабатывать. Иногда в RSS попадает ссылка, которая редиректит хрен знает куда. То есть сделать и забыть тут не получится - придётся постоянно это дело поддерживать и допиливать. Также необходимо придумать способы обхода различных блокировок: разгадывать каптчу, юзать прокси и т.п.