Павел Волков
Заказчик Павел Волков kaktus725 | FL.RU

Павел Волков

На сайте 5 лет и 7 месяцев (заходил 8 месяцев 8 дней назад)
0
58
Рейтинг
58
Все (1)       Заказы (1)        Вакансии (0)       Конкурсы (0)
Разместить заказ
13 Августа 2021
Бюджет: 5000 руб
Необходимо организовать парсинг новостей с сайтов:
- profile.ru
- ria.ru/lenta
- novorosinform.org
- korrespondent.net
- russtrat.ru
и возможно, в последствии, других.

Скрипт должен быть написан на PHP и работать на виртуальном хостинге
timeweb.com/ru/services/h... (принимаются аргументированные возражения),
– на произвольном домене,
– и экспортировать результат свой работы в CSV файл,
– который будет содержать последние 100 распарсенных новостей (статическая цифра, будет зависеть от количества и интенсивности источников, должна быть возможность ее изменить, в коде например),
– файл, имеющий постоянный URL (типа domain.ru/export.csv).
(Далее файл будет импортироваться и обрабатываться средствами некой CMS.)

Требования к CSV-файлу:
– разделитель – | (вертикальная линия),
– заголовки полей с следующем порядке: date, title, text, description, image, tags, source,
– файл должен регулярно обновляться,
– каждая новость в файле должна быть уникальной, не допускается повторения ранее попадавших в файл новостей.

Что должна содержать каждая полученная с сайта-источника новость:
– дату/время публикации в UNIX формате (поле date),
– заголовок новости (поле title),
– полный типографированный текст новости с HTML-разметкой (поле text),* (www.artlebedev.ru/typogra...
– краткое описание новости – подойдёт первое предложение из основного текста (поле description)*,
– URL иллюстрации, которая относится к новости на странице источника, если таковая существует (поле image),
– теги новости через запятую, если таковые существуют (поле tags),
– URL распарсенной новости – ссылка на источник (поле source).

Образец: 89.223.69.131/

* К тексту и к описанию новости в некоторых случаях придется предъявлять дополнительные требования, в зависимости от источника. Так, например, на ria.ru, первым предложением идет "МОСКВА, 16 авг — РИА Новости.", что нужно обязательно исключить из текста и не использовать как первое предложение для краткого описания.

* * *
Весь поток новостей в файле должен быть отсортирован по дате (date) – от старых к последним. Если добавляется пять новых, из файла убираются пять старых новостей. По такому же принципу работает экспорт в любую RSS-ленту – из базы данных выгружаются определенное количество последних новостей, при появлении новых, вытесняются старые.

Примерный алгоритм такой: парсинг происходит каждые полчаса (например). Если парсинг производится в два этапа (сначала проводится парсинг страницы со списком новостей, потом парсинг каждой конечной страницы из полученного списка), логичнее сравнить новые данные, полученные из списка новостей с сохраненным списком предыдущего парсинга, на предмет появления новых статей, чтобы не делать парсинг всех конечных страниц без надобности. Либо проводится сравнение – если такие URL уже есть в базе данных, их парсить не нужно. (Таким образом реализуется проверка, не допускающая повторную загрузку уже загруженных новостей.)

Потом происходит парсинг конечных страниц, по собранному в предыдущем абзаце списку URL. Все собранные данные приводятся к структуре "date, title, text, description, image, tags, source" и помещаются в базу данных. Независимо от того, из какого источника (сайта) были получены данные, они приводятся к единому виду, чтобы потом сформировать единый список новостей в CSV-файле.

В конце каждого (получасового) обновления происходит выгрузка в файл (по условию "если были добавлены новые данные") – из базы данных в файл выгружаются 100 последних новостей отсортированных по дате. Все новости старше 24 часов из базы данных удаляются (данные хранятся сутки, чтобы иметь возможность проанализировать, какие новости уже были загружены).

Это примерная архитектура, для объяснения принципа. Каким образом хранить данные и сравнивать, что уже было загружено с тем что загружено в последний раз – дело исполнителя, будет это база данных MySQL или база данных на основе простых файлов, это кому как нравится, лишь бы правильно работало.

Прошло времени с момента публикации: 3 года 4 месяца 11 дней 9 часов 53 минуты
Раздел: Программирование / Веб-программирование

Наши партнеры
Сведения об ООО «Ваан» внесены в реестр аккредитованных организаций, осуществляющих деятельность в области информационных технологий. ООО «Ваан» осуществляет деятельность, связанную с использованием информационных технологий, по разработке компьютерного программного обеспечения, предоставлению доступа к программе для ЭВМ и является правообладателем программы для ЭВМ «Платформа FL.ru (версия 2.0)».