Бюджет: по договоренности
Заказчик выбрал исполнителя:
Chipi Daili  
Задача
Заливка в локальную базу объявлений с сайта  irr.by из определенного раздела по определенным параметрам и дальнейшая обработка этих объявлений по определенным условиям с окончательной выдачей результата (объявлений) для печати. Другими словами, отсев «ненужных» объявлений и создание так называемого «черного списка».

Реализация
1. На сегодняшний день нужно парсить объявления с сайта irr.by, раздел «Недвижимость => Квартиры. Продажа», параметры: г. Минск, источник «сайт IRR.BY» и источник «Печатные издания» (нужно раскрыть меню «Больше фильтров»). Ссылки выглядят сейчас так: irr.by/realestate/sale-flats/minskiy-r_n/minsk-gorod/search/currency=BYR/sourcefrom=0/ и irr.by/realestate/sale-flats/minskiy-r_n/minsk-gorod/search/currency=BYR/sourcefrom=1/.
2. Первое наполнение базы нужно сделать полностью, то есть все объявления по указанным ссылкам, которые можно спарсить. Затем поставить скрипт в cron и запускать каждый час с загрузкой только «последнечасных» объявлений (время подачи в часах и минутах есть в общем списке для каждого объявления).
3. Обработка «залитых» объявлений: удаление «ненужных» объявлений, создание «черного списка» объявлений, формирование списка «нужных» объявлений для печати.
4. Сравнение списка «нужных» объявлений с объявлениями на сайте realt.by. Эту опцию пока не делаем, но предусмотреть
5. Возможность последующей выборки любой прошлой даты для просмотра и печати.
6. Предусмотреть возможность работы парсера и с других ресурсов. Пока irr.by, мы оттестируем, затем запустим еще как минимум 6 сайтов: adrex.by, second.by, olx.by, hata.by, kufar.by, onliner.by. 
7. Очень круто было бы сделать реализацию парсера таким образом, чтобы со стороны ресурса не было никаких подозрений и банов. То есть чтобы скрипт вел себя как рядовой пользователь, без лишних и очень частых обращений.

Обработка
1. После загрузки объявлений за последний час происходит вычисление ID, которые уже были ранее (все ID записываются в отдельную таблицу). При совпадении – предыдущее объявление удаляем и помещаем в базу текущее объявление с новой датой. Время жизни ID от последней смены даты – 1 месяц (затем удаляем из базы). ID находится в конце URL на объект недвижимости в виде числа (после слова advert и перед расширением .html) либо внутри объявления в строке после заголовка.
2. Формируется временная база всех номеров телефонов из объявлений в виде (XX) YYYYYYY, где X – код сети, Y – номер телефона (на данном этапе оставляем привязку номера телефона к ID). Номера телефонов достаются из картинки, которая открывается при нажатии  «Показать телефон» в поле «Телефон» блока «Контакты». Должен еще быть небольшой «скриптик», распознающий цифры с картинок (на самом деле это относительно простая вещь). Нюанс в том, что разные люди могут в разном формате писать свои номера телефонов, поэтому нужно их все привести к единому виду (XX) YYYYYYY для дальнейшей работы с ними (это просто сделать, если брать номер с конца 9 только цифр, игнорируя все остальные символы). Обратите внимание, что к одному ID может быть привязано несколько номеров
3. При первом формировании базы, скрипт сравнивает номера телефонов и при их совпадении (даже если совпадает один номер, а не все) в двух и более объявлениях – удаляет эти объявления, а соответствующие номера телефонов (с соответствующей датой) заносит в отдельную таблицу под названием «черный список». Номера телефонов из этих удаленных объявлений вносятся в «черный список» все, но без повторений.
4.Далее при ежечасной отработке скрипта, сравнение номеров телефонов производится не друг с другом, а с номерами из «черного списка», но по тому же алгоритму. При совпадении, номеру в «черном списке» присваивается последняя дата. Время жизни номера телефона в «черном списке» от последней смены даты – 1 год (затем удаляем из базы). По итогу, в «черном списке» остаются номера с датами уже без привязки к ID.
5. Затем удаляем объявления, у которых в блоке «Контакты» есть хотя бы одно из полей: «УНП» или «Название компании» (не забываем при этом вносить номера телефонов в «черный список»).

Выдача
1. Оставшиеся «нужные» объявления за определенное число выводить в виде таблицы (с заголовком в виде даты) из шести колонок – «Комнаты» (количество комнат), «Описание» (вся основная информация), «Телефоны» (номера собственников), «Источник» (прямая ссылка на объект в отдельное окно), «Удалить» (такой маленький крестик, нажав на который, номера заносятся в «черный список»), «Примечания» (поле для внесения заметок). Строки должны сортироваться по времени «затягивания» объявлений. Сверху этой таблицы поместить календарь для быстрого доступа к любой дате. И предусмотреть сортировку (ссылку) по столбцу «Комнаты» в пределах каждой даты.
2. Вывод информации – картинка в проекте


Сроки – до 27 03 2015
Реализация на вашем ресурсе. Утверждение. Перенос. Последующая доработка парсера
Опубликован 26.03.2015 в 22:09 Последнее изменение: 24.03.2015 в 22:42

Выберите способ верификации:

Обновите страницу после прохождения верификации.