Приложение "Парсер ADS-API.RU": различия между версиями

Материал из CMS Sitebill Wiki
Перейти к навигации Перейти к поиску
Строка 12: Строка 12:
  
 
- feed_label - поле с системным именем feed_label. safe_string. Для хранения признака источника
 
- feed_label - поле с системным именем feed_label. safe_string. Для хранения признака источника
 +
 
- поле для хранения уникального ID с источника
 
- поле для хранения уникального ID с источника
  

Версия 02:07, 5 июля 2018

Адреса парсинга записываются в отдельной строке в формате

label***url***target_user

label - метка задачи, которая используется при запуске парсинга
url - адрес забора данных
target_user - ID пользователя к которому будут прикреплены объекты

Уникальность объектов сверяется по паре значений uniq_id (значение из данных предоставляемых объектов из поля id) и user_id (целевой пользователь, назначенный в задаче парсинга). Перемещая объект, полученный парсером, между пользователями, Вы разрываете текущую связь и можете получить дублирование одинаковых объектов на разных пользователях.

Требования

Модель объекта должна иметь среди своих свойств следующие:

- feed_label - поле с системным именем feed_label. safe_string. Для хранения признака источника

- поле для хранения уникального ID с источника

Необходимые таблицы устанавливаются стандартной установкой приложения /admin/index.php?action=adsapiruparser&do=install

Настройка

Для указания каким способом и куда сохранять полученные из парсера данные служит раздел настроек приложения Маппер.

Количество комнат в квартире или доме - указываем системное имя поля в модели data для сохранения числового значения. Это значение для типов Квартира и Дом.

Этаж - системное имя поля для хранения значения.

Этажность - системное имя поля для хранения значения.

Координаты - указываем системное имя поля в модели data для сохранения значения. Поле должно иметь тип geodata

Уникальный ID - системное имя поля для хранения ID объекта в базе ads-api.ru. Это значение будет использоваться для проверки был ли загружен данный объект ранее или нет.

Цена аренды - системное имя поля для хранения значения цены для сдаваемых объектов.

Цена продажи - системное имя поля для хранения значения цены для продаваемых объектов.

Валюта цен - ID валюты на сайте, которое соответствует валюте цен из парсера. Так как парсер выдает все цены в рублях, то в этом поле должен быть указан ID рубля из Менеджера валют. Если на сайте цены не указываются посредством поля выбора валют, то это значение может быть пропущено.

Общая площадь (Квартиры\Дома), Общая площадь (Коммерческие объекты), Общая площадь (Гаражи) - системное имя поля для хранения значения общей площади для разных типов объектов. Если в модели объекта под хранение общей площади предназначено одно поле, например "Общая площадь (square_all)", то в каждом из этих полей указывается одно и то же системное имя.

Жилая площадь, Площадь кухни - системные имена полей под хранение соответствующих значений

Площадь участка (отдельного) - системное имя поля для хранения площади земельного участка. Это поле будет использовано для записи площади, когда парсер встретит объект типа Участок.

Площадь участка (при доме) - системное имя поля для хранения площади земельного участка. Это поле будет использовано для записи площади участка, когда парсер встретит объект любого другого типа кроме Участок, но этот объект, кроме своей основной площади, будет снабжен данными о площади участка. Например когда предлагается Дом с участком, коммерческие объекты, которые могут иметь в своем расположении участки.

Описание, Заголовок - системные имена полей под хранение соответствующих значений. Если поля для хранения какого-то значения у Вас не предусмотрено, Вы можете или добавить поле в модель, или не указывать соотв. настройку.

Полный адрес - системное имя поля для хранения строки с полным адресом объекта. Для справки, например.

Номер телефона, Имя контактного лица - системные имена полей под хранение имени и телефона владельца или продавца предоставляемых парсером.

Название источника - системное имя поля для хранения строки с названием источника.


Важно! Все упомянутые выше настройки устанавливают конкретное значение из данных парсера. Например из парсера приходит объект с признаком "комнатность" равным 5. При сохранении этого значения могут возникнуть следующие ситуации:

а) в наличии имеется поле под хранение комнатности, оно имеет вид текстового поля и системное имя room_count. Тогда мы просто указываем room_count в поле Количество комнат в квартире или доме

б) в наличии имеется поле под хранение комнатности, но оно имеет вид поля выбора вариантов select_box и варианты {1~~1}{2~~2}{3~~3} и системное имя room_count. В этом случае мы так же можем указать аналогично предыдущему, так как ключи у нас совпадают с величиной комнатности.

в) в наличии имеется поле под хранение комнатности, но оно имеет вид поля выбора вариантов select_box и варианты {1~~1комн}{2~~2комн}{3~~3комн} и системное имя room_count. В этом случае мы так же можем указать аналогично предыдущему, так как ключи у нас совпадают с величиной комнатности.

г) Комнатность учтена в названиях наших разделов. В этом случае мы не можем указать поле под хранение, так как его не существует. А для правильного размещения объекта в разделе мы будем вынуждены воспользоваться Adsapiruparser_Resolver

Распределение по типам и контракту

Все объекты из парсера приходят с признаками типа (Квартира, Комната, Дом, Коммерческая, Участок) и контракта (Продажа, Аренда и Посуточно (только Квартира, Комната, Дом)). Необходимо указать имена полей и значения, которые будут присвоены объекту в случае каждого свойства.

Для этого существует набор настроек маппера. Эти настройки построены в виде пар Тип объекта - Тип контракта. Так настройка "Дом/Продажа" устанавливает условия, которые будут применены к загружаемому объекту с типом "Дом" и контрактом "Продажа". Вы не обязаны указывать условия для всех типов-контрактов. Допустимо установить только интересующие Вас. Объекты, для которых не будет найдено условий просто не будут добавлены в базу.


Настройки этого типа указываются в виде пар имя-значение

СИСТЕМНОЕ_ИМЯ_ПОЛЯ=ПРИСВАИВАЕМОЕ_ЗНАЧЕНИЕ

Таких пар можно указать несколько, но каждую с новой строки.

Допустим Ваша структура разделов имеет вид (в скобках указан ID соотв. раздела)

Продажа (27)
-- Квартиры (33)
-- Дома (38)
Аренда (24)
-- Квартиры (53)
-- Дома (66)

В таком случае для "Дом/Продажа" Вам необходимо будет указать набор правил

topic_id=38

А если бы Вашу структура имела вид

Жилая
-- Квартиры (33)
-- Дома (38)

и контракт был бы вынесен в отдельное поле с именем optype вида {1~~Продажа}{2~~Аренда}, то правила приняли бы вид

topic_id=38
optype=1

Рассмотрим еще один пример. На сайте существует раздел для продажи земельных участков с ID=78. Так же у нас есть поле под хранение типа участка вида {1~~ИЖС}{2~~СНТ} и с сситемным именем lot_type. Тогда для раздела Поселений (ИЖС)/Продажа мы установим следующие правила

topic_id=78
lot_type=1

Некоторые типы, например Участки и Гаражи имеют очень детальное деление. Если Вас не интересует столь детальные данные, то Вы можете использовать пункты Любые участки и Любой гараж, которые включают в себя любой детальный подтип этого типа.

Материал дома

Группа настроек для получения материала домов. Настройка производится по принципу аналогичному установке типа недвижимости, за исключением того, что указать можно только одну пару.

Если материал дома хранится на сайте в поле выбора вариантов с системным именем walls_type и вариантами {1~~Кирпич}{2~~Панель}, то для получения данных о кирпичном материале дома из парсера укажите

walls_type=1

Если же поле walls_type имеет вид поля ввода и данные о материале дома вводятся вручную, то можно указать таким образом

walls_type=Кирп.

Adsapiruparser_Resolver

В процессе парсинга приложение ищет в папке шаблона по адресу /template/frontend/ШАБЛОН/apps/adsapiruparser/ специальный файл adsapiruparser_resolver.php

Этот файл предназначен для выполнения нестандартных либо невозможных для парсера действий. Например для превращения данных о комнатности объекта в конкретный раздел структуры, для разбора географических данных, для установки каких-то дополнительных свойств.