Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

В простейшем случае, реализация загрузки данных для дальнейшей их обработки

и записи в базу данных информационной системы (интернет-магазина) занимает,

ориентировочно, 30 минут. Время, необходимо для дальнейшей обработки данных

и записи в БД информационной системы (интернет-магазина) зависит от технических

особенностей этой системы (интернет-магазина).

Алгоритм загрузки цен и данных о наличии товаров, выглядит следующим образом:

1. Регистрируем новое приложение в личном кабинете на сайте nikasopt.ru

и получаем авторизационный токен

2. Выбираем идентификатор города, данные для которого необходимо получить.

Список городов и идентификаторов можно получить через API (в т. ч.

путем обращения к API через браузер) по следующему URL:

http://api.nikasopt.ru/v1/cities.xml?auth_token=авторизационный_токен

3. Задаем начальный номер запрашиваемой страницы результатов поиска (равен 1)

2. Скрипт обращаемся к первой странице ресурса API

по URL http://api.nikasopt.ru/v1/catalog/items.xml, указывая в качестве

GET-параметров свой авторизационный токен (auth_token), идентификатор города,

номер запрашиваемой страницы результатов

3. Обрабатываем полученный XML, получая из него данные о названии, наличии,

цене на товар в требуемом городе (если при обращении к API не был передан

идентификатор города, то можно получить данные о наличии и ценах для всех

городов сразу)

4. Считываем общее число страниц в результате (списке товаров)

5. Увеличиваем на 1 номер запрашиваемой страницы результатов

6. Если номер заправшиваемой страницы результатов меньше или равен общему

числу страниц, полученному на шаге 4, то переходим к шагу 2. В противном

случае прекращаем сбор данных (все данные получены).

Пример простейшего скрипта, получающего данные о наличии и ценах на все

товары для одного города:

// Идентификатор города, данные для которого необходимо получить.

// На момент написания данной инструкции использовались

// следующие идентификаторы:

// 3 — Екатеринбург

// 2 — Челябинск

$cityId = 3;

// Начальная страница списка товаров и число товаров на одной странице:

$page = 1;

$pageSize = 100;

// Авторизационный токен:

$apiKey = 'авторизационный_токен_вашего_приложения';

// Массив данных о товарах:

$items = array();

// Данные будем хранить в следующем виде:

// [

// Название товара => [

//],

// ...

// ]

// Процесс сбора данных, последовательно загружаем страницы списка товаров

// и записываем необходимые данные в результирующий массив:

$totalPages = 1;

while ($page

{

// Ресурс API, отвечающий за передачу списка товаров и цен:

$url = 'http://api.nikasopt.ru/v1/catalog/items.xml?auth_token='.urlencode($apiKey);

$url .= '&page='.$page.'&pageSize='.$pageSize.'&cityId='.$cityId;

// Получаем ответ от API:

if ($responseText = file_get_contents($url))

{

// Создаем объект для обработки XML

$xml = new SimpleXMLElement($responseText);

// Получаем общее число страниц в списке

$totalPages = (int)$xml->pager['pages-count'];

// Проходим по всем товарам, переданным в ответе API

foreach ($xml->items->item as $item)

{

$name = (string)$item['name'];

$itemData = array(

'price' => 0,

'available' => false,

'instock' => false

);

// Ищем наш город (это же можно сделать и через XPath):

foreach ($item->city as $city)

{

if (isset($city['id']) && $city['id'] == $cityId)

{

$itemData['available'] = (isset($city['available']) && $city['available'] == 'true');

$itemData['instock'] = (isset($city['instock']) && $city['instock'] == 'true');

// Проверяем, есть ли цена, и записываем ее

if ($city->price && isset($city->price[0]) && $city->price[0] && isset($city->price[0]['value']))

{

$itemData['price'] = (float)$city->price[0]['value'];

}

break;

}

}

// Сохраняем данные о товаре в результирующем массиве

$items[$name] = $itemData;

}

// Переходим к следующей странице

$page++;

}

else

{

// Ответ не был получен, обнуляем число страниц в списке и выходим

// из цикла

$totalPages = 0;

}

}

// Выводим массив:

var_dump($items);

?>

9 лет назад
pavlara
Павел 
39 летРоссия
11 лет в сервисе
Был
5 лет назад