Парсер объявлений сайта http://slando.com.ua

Назначение программы-парсера

Программа предназначена для заливки объявлений недвижимости сайта http://slando.com.ua на какой-либо информационный ресурс, например на сайт, содержащий объявления по недвижимости, либо в базу данных какого либо CRM.

Технические требования

Пограмма-парсер написана на языке PHP, версии 4.0.2 и выше с использованием библиотеки CURL.

Содержимое программы-парсера

Парсер состоит из восьми файлов, находящихся в одной директории:

  • .htaccess — файл с настройками для директории
  • import_slando.php — файл записи объявлений в базу данных.
  • geogr.php — файл содержащий данные географической структуры (иерархии) сайта: идентификаторы областей, городов, ройонов и связи между ними.
  • parser_slando.php — файл парсер объявлений сайта http://dom.ria.ua
  • parser_kiev.php — файл парсер объявлений города Киева сайта http://dom.ria.ua
  • parser_region.php — файл парсер объявлений указанной (параметр region_id) области сайта http://dom.ria.ua
  • service.php — файл для загрузки всех объявлений сайта,
    файл обращается к файллу parser_region.php с разными параметрами (идентификатор региона, идентификатор рубрики, типа предложения)
Файл import_slando.php записан в кодировке UTF-8, все остальные файлы записаны в кодировке windows-1251.

Настройка парсера

  • count_limit — ограничение по количеству объявлений
  • rnd — флаг: использовать перемешивание или нет
  • time_limit — ограничение объявлений по времени (если с даты подачи последнего на странице поиска объявления прошел больший интервал — следущая страница не загружается)
  • массив types_ob — идентификаторы типа предложения (1 - Продажа, 2 - Аренда)
  • массив types_realty — идентификаторы типа недвижимости (1 - Квартира, 2 - Дом, дача, 3 - Офис, 4 - Участок, 5 - Коммерческая недвижимость, 6 - Курортная недвижимость, 7 - Гараж)
  • type_ob_id — задать только один тип предложения (по умолчанию не используется)
  • type_realty_id — задать только один тип недвижимости (по умолчанию не используется)
  • region_id — задать только один тип недвижимости (только для файла parser_region.php)

Если задан (передан) флаг "перемешивание" элементы массивов идентификаторов типов предложений и типов недвижимости перемещаются в случайном порядке.

Краткое описание работы

Программа-парсер эмитирует работу пользователя сайта dom.ria.ua загружая страницы поиска вида
http://dom.ria.ua/?target=search&type_realty_id=2&type_ob_id=2&obl_id=1&city_id=1&area_id=15105
либо http://dom.ria.ua/?target=search&type_realty_id=2&type_ob_id=2&obl_id=1&city_id=1.
Параметры поиска передаются в URL.

Ограничение выводимых на странице объявлений — 40 (может быть задано 10, 20, 30, 40). Если на странице присутствует ссылка на следующую страницу загружается страница http://dom.ria.ua/?target=search&type_realty_id=2&type_ob_id=2&obl_id=1&city_id=1&area_id=15105&page=1,
за ней http://dom.ria.ua/?target=search&type_realty_id=2&type_ob_id=2&obl_id=1&city_id=1&area_id=15105&page=2
и т.д. пока на странице не будет ссылки на следующую либо если с даты подачи последнего на странице поиска объявления прошел больший интервал нежели заданное ограничение — time_limit (по умолчанию 10 дней).

Для каждой загруженной страницы поиска парсер обнаруживает ссылки на страницы объявлений вида http://dom.ria.ua/realty-2023904.html и загружает их. Данные о каждом объявлении записываются в XML-файл.

Парсер может работать в двух режимах:

  1. Передавать идентификаторы районов (area_id) при поиске — так работает parser_slando.php и parser_kiev.php
  2. Не передавать идентификаторы районов (area_id) при поиске — так работает parser_region.php
Принципиальное отличие между режимами заключается в том что при первом способе находятся только объявления с полной географической информацией (указаны идентификаторы области, города, района/поселка), но не находятся объявления в которых не указан район либо поселок.

При втором способе находятся все объявления, но идентификатор района/поселка (если указан) сложнее определить.

Парсер создает временный XML файл — slando_realty.xml, следующей структуры:

<?xml version="1.0" encoding="windows-1251"?>
<adverts>
<advert>
<realty_id>2135239</realty_id>
<type_ob_id>1</type_ob_id>
<type_realty_id>1</type_realty_id>
<obl_id>25</obl_id>
<city_id>536</city_id>
<area_id/>
<street>Головна</street>
<settleOther>Коровия</settleOther>
<price>360000</price>
<currency>$</currency>
<priceFor>за все</priceFor>
<flat>20</flat>
<floor>1</floor>
<floors>4</floors>
<sqTotal>1200.00 кв. м.</sqTotal>
<description>
Будинок розміщенний, біля кільця в с. Коровія, і виходить на головну трасу Чернівці-Порубне. Він складається з цоколя, в якому розміщенні дві сауни з басейном, винний підвал. На першому поверсі розміщенна велика зала, туалети, електрощитова, кухня, а також господарські приміщення. На другому поверсі розміщенна велика тренажерна зала, а також кімнати різноманітного цільового призначення. На 3 поверсі(мансарді) розміщенно 7 окремих спалень з санузлами. ВИконано електромонтажні та протипожежні роботи. Передбачено встановлення 21 кондиціонера, 11 камер спостереження та вентиляційне забезпечення. &lt;br /&gt;Будинок можливо перевести під комерціну діяльність. &lt;br /&gt;&lt;br /&gt;Посередникам не турбувати.&lt;br /&gt;&lt;br /&gt;тел. (050)2400653
</description>
<info_main>
окна: металопластик; состояние: нужен ремонт; дом: кирпичный; пол: стяжка;
</info_main>
<info_add>
в квартире есть: телефон, интернет, сигнализация; во дворе есть: колодец; в доме есть: басеин;
</info_add>
<contact>Михайло</contact>
<phone>(050) 240-06-53</phone>
<date>2010-07-15</date>
<photos>
http://img.ria.ua/photos/dom/photo/346/34604/3460439/3460439f.jpg,http://img.ria.ua/photos/dom/photo/346/34604/3460436/3460436f.jpg,http://img.ria.ua/photos/dom/photo/346/34604/3460440/3460440f.jpg,http://img.ria.ua/photos/dom/photo/346/34604/3460441/3460441f.jpg
</photos>
</advert>
<advert>
<realty_id>1940847</realty_id>
<type_ob_id>1</type_ob_id>
<type_realty_id>1</type_realty_id>
<obl_id>25</obl_id>
<city_id>537</city_id>
<area_id/>
<street>Кобилянська</street>
<settleOther>Кострижовка</settleOther>
<price>14000</price>
<currency>$</currency>
<priceFor>за все</priceFor>
<flat>2</flat>
<floor>2</floor>
<floors>2</floors>
<sqTotal>47.30 кв. м.</sqTotal>
<info_main>
окна: двойные стекла; стены: побелка; пол: доска; отопление: газовый котел; состояние: удовлетворительное; дом: кирпичный; балкон/лоджия: пристройка;
</info_main>
<info_add>
в квартире есть: счетчики; рядом есть: детсад, школа, супермаркет, парк, речка/озеро, лес; Статус недвижимости: Личная;
</info_add>
<contact>agent007</contact>
<phone>(095) 157-89-90</phone>
<phone2>(050) 014-19-05</phone2>
<date>2010-05-20</date>
</advert>

...

</adverts>

Описание формата XML файла

Все данные файла заключены в тэг adverts. Данные о каждом объявлениии находятся в тэге advert. Тэг advert в свою очередь содержит такие теги: realty_id, type_ob_id, type_realty_id, obl_id, city_id, area_id, street, price, currency, priceFor, contact, phone, date(обязательные — всегда присутствуют), flat, floor, floors, sqTotal, sqLiving, sqKitchen, sqLand, description, info_main, info_add, phone2, photos, lat, lng (дополнительные — теги могут отсутствовать).

Тэг realty_id содержит идентификатор объекта на сайте, однозначно определяющий ссылку на объект вида http://dom.ria.ua/realty-2214842.html

Тэг type_ob_id содержит идентификатор типа предложения (1 - Продажа, 2 - Аренда)

Тэг type_realty_id содержит идентификатор типа недвижимости (1 - Квартира, 2 - Дом, дача, 3 - Офис, 4 - Участок, 5 - Коммерческая недвижимость, 6 - Курортная недвижимость, 7 - Гараж)

Тэг obl_id содержит идентификатор области

Тэг city_id содержит идентификатор города

Тэг area_id содержит идентификатор района

Тэг street содержит название улицы возможно с номером дома или какой-нибудь сопроводительной информацией

Тэг price содержит цену объекта

Тэг currency содержит наименование валюты для цены ($ - доллар США, грн. - украинская гривна)

Тэг priceFor содержит

Тэг flat содержит количество комнат объекта

Тэг floor содержит этаж на котором находится объект

Тэг floors содержит количество этажей дома, в котором находится объект (для квартир) или количество этажей объекта (для домов)

Тэг sqTotal содержит значение общей площади

Тэг sqLiving содержит значение жилой площади

Тэг sqKitchen содержит значение площади кухни

Тэг sqLand содержит значение площади участка

Тэг description содержит описание объекта

Тэг info_main содержит основную информацию описательного характера

Тэг info_add содержит дополнительную инормацию описательного характера

Тэг contact содержит имя продавца либо название агенства недвижимости

Тэг phone содержит основной телефон продавца

Тэг phone2 содержит дополнительные контактные телефоны продавца, перечисленные через запятую

Тэг date содержит дату подачи объявления

Тэг photos содержит ссылки на изображения, перечисленные через запятую

Тэг lat содержит значение широты объекта на карте

Тэг lng содержит значение долготы объекта на карте

Сохранение данных

После создания XML файла необходимо сохраненить объявления. Для этого используется файл import_slando.php, записывающий объявления в базу данных и переносящий файл slando_realty.xml в архив (с добавлением к имени XML-файла даты запуска файла import_slando.php). Для сопоставления рубрик import_slando.php использует таблицу slando_rubric базы данных. Для географического сопоставления используются таблицы slando_obl, slando_city, slando_area, для определения региона (области), города, района/пригорода объекта соответственно. Кодировка файла — UTF-8.

Приобретение парсера (350 грн.)

По вопросам приобретения и настройки программы парсера обращаться:

  • Тел.: (095)590-49-91, Александр
  • E-mail: evrth2me@gmail.com