Валидатор яндекс маркет

Скрипт Human Emulator парсер Яндекс Маркета

Одной из актуальных задач на сегоднешний день является парсинг товаров с Яндекс Маркета. Мы решили не обходить эту задачу стороной и написать скрипт, который собирает заданные товары и всю информацию по ним и сохраняет её в базу данных MySQL.

Перед тем как написать скрипт мы с официального сайта скачали и установили последнюю сборку Mysql со всеми причиндалами и расскоментарили библиотеку mysql в php.ini, для того что бы можно было использовать функции работы с базами данных mysql в php.

Так как данные на сайте храняться в utf-8 формате мы использовали для разработки скрипта Unicode версию программы Human Emulаtor. Эта версия лежит рядом с exe-шником обычной версии и называется XWeb Human Emulator MT UE.exe. Входные данные для скрипта тоже используются в unicode формате. На входе скрипт принимает файл с ключевыми словами, по которым он ищет нужные вам товары в следующем формате:

ноутбук
монитор
клавиатура
мышь

В результате работы скрипта создаётся база данных с таблицей товаров markets с колонками Ключевое слово, Наименование товара, Средняя цена, Диапозон цен, Html код картинки, Html код кратких хартеристик, Html код всех характеристик. Можно все html результаты получать в виде текста. Для этого при разборе страниц товара вместо inner html надо использовать функции которые получают inner text. В функции get_market_info($market_key) заменить $element->get_inner_html_by_attribute на $element->get_inner_text_by_attribute.
Результат работы скрипта в MySQL Workbench :

Настройки скрипта:

// файл с товарами для разбора — тут указывается файл с ключевыми словами для поиска товаров // данные должны быть в unicode $a_markets = file(«data/markets.txt»); // глубина прохода в поисковые результаты // со скольких страниц собирать товары прежде чем перейти к следующему // если нужно собирать все товары надо просто задать этот параметр = -1 $cnt_pages = 15;

Сам скрипт выглядит следующим образом:

<?php $xhe_host =»127.0.0.1:7011″; // The following code is required to properly run XWeb Human Emulator require(«../../Templates/xweb_human_emulator.php»); // ////////// настройки скрипта////////////////// // файл с товарами для разбора $a_markets = file(«data/markets.txt»); // глубина прохода в поисковые результаты $cnt_pages = 15; // текущая страница $crnt_page =1; // режим отладки $dbg=true; // /////////////////// дополнительные модули ///////////////////// // функции require_once(«functions.php»); // ///////////////////// script ///////////////////////////////////////////////////////// debug_mess(date(«\[ d.m.y H:i:s\] «).» скрипт запустили»); // соединяемся с базой $mysql_bd = @mysql_connect(‘localhost:3306’, ‘root’, ‘password’); // если не подключились выдать сообщение об ошибке if (!$mysql_bd) { die(‘ошибка соединения: ‘ . mysql_error()); // закончить скрипт $app->quit(); } // создадим базу данных для товаров $sql = ‘CREATE DATABASE IF NOT EXISTS yandex_markets’; if (!mysql_query($sql, $mysql_bd)) debug_mess(«не удалось создать базу yandex_markets: » . mysql_error()); // ждём пока обработается sleep(1); // если уже была создана выберем базу mysql_select_db(«yandex_markets», $mysql_bd); // ждём пока обработается sleep(1); // создадим таблицу если ещё нету её $sql = ‘CREATE TABLE IF NOT EXISTS markets (Market TEXT, Market_Name TEXT, Avg_Price TEXT, Range_Price TEXT, Image TEXT, Properties MEDIUMTEXT, All_Properties MEDIUMTEXT) ENGINE=MyISAM DEFAULT CHARSET=utf8’; // выполнить запрос //mysql_query($sql,$mysql_bd); if(!mysql_query($sql,$mysql_bd)) debug_mess(«ошибка запроса : » . mysql_error()); // пройтись по всем товарам for($j=0;$j<count($a_markets);$j++) { // обнулим страницы перед поиском $crnt_page =1; // перейти в yndex market $browser->navigate(«http://market.yandex.ru»); $input->set_value_by_name(«text»,$a_markets[$j]); $button->click_by_number(0); $button->click_by_inner_text(«Подобрать»,true); // ходим до тех пор пока не кончатся ссылки по цифрам while(true) { $models= $webpage->get_body_inter_prefix_all(«class=b-offers__name»,»\»>»); $a_models=explode(«<br>»,$models); // пройдёмся по всем ссылкам for($k=0;$k<count($a_models);$k++) { // перейти на страницу товара $str_href=get_string($a_models[$k], «modelid»,»&»); $anchor->click_by_href(«modelid».$str_href,false); // получить информацию по товару get_market_info(trim($a_markets[$j])); // вернуться назад $browser->go_back(); } // не першли на следующую страницу if(!next_page($crnt_page)) break; } } // закрыть базу mysql_close($mysql_bd); debug_mess(date(«\[ d.m.y H:i:s\] «).» скрипт закончил работу<br>»); // Quit $app->quit(); ?>

Скрипт написан 11.09.2012 в Human Emulator 4.4.19 Advanced. На момент публикации статьи 11.09.2012 скрипт был рабочий.

скачать скрипт
Количество скачиваний: 3742

<< Другие скрипты

Стандарт YML не допускает использования в текстовых данных непечатаемых символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением символов с кодами 9, 10, 13. Разрешены — табуляция, перевод строки, возврат каретки.). Это требует обязательной замены некоторых символов на эквивалентные им символьные коды:

Символ в тексте Код для YML-файла
» &quot;
& &amp;
> &gt;
< &lt;
' &apos;

В большинстве случаем сервис самостоятельно преобразует запрещенные символы и уберет html теги, т.к. они не действуют во ВКонтакте. Но все же мы не рекомендуем использовать html теги в элементах yml.

В редких случаях это мешает обработке файла.

Если в файле все таки присутствуют html теги, то для надежности, можете обернуть их в конструкцию <![CDATA[ ]]>. Это необязательно. Пример:

<description><![CDATA[Здесь должно быть <b>описание товара</b>, если в нем есть HTML теги.]]></description>

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

  • Подробно о структуре YML можно прочитать на сайте Яндекса здесь.

  • Пример YML файла на сайте Яндекса здесь.

  • Еще один пример структуры YML файла здесь.

Несколько категорий для товара

В стандарте YML не предусмотрено использование нескольких категорий, но SocPoster делает исключение для этого правила и обрабатывает все тэги <categoryId> указанные для товара. Пример:

<categories><categoryid="1">Просто категория</category><categoryid="3">Еще одна категория</category><categoryid="4"parentId="1">Дочка просто категории</category><categoryid="5">Обычная категория</category><categoryid="12">Категория</category></categories>   <offerid="1"available="true"><url> http://socposter.ru/ </url><price>100</price><currencyId>RUB</currencyId><categoryId>1</categoryId><categoryId>3</categoryId><categoryId>5</categoryId><categoryId>12</categoryId><picture> http://socposter.ru/product-img1.jpg </picture><picture> http://socposter.ru/product-img2.jpg </picture><name>Название товара</name><vendor>Производитель</vendor><description> Описание. </description><paramname="Название параметра 1">параметр 1</param><paramname="Название параметра 2">параметр 2</param></offer>

YML

Для присутствия интернет-магазина в Яндекс-Маркете необходим специальный YML-файл.

В нём вся необходимая информация о товарах: что, почём, как выглядит, чем прекрасно и где можно взглянуть. Если у Вас нет такого файла, то в Яндекс-Маркет Ваш магазин если и допустят, то он там надолго не задержится.

Составление прайсов YML – задание кропотливое. Эти файлы должны строго соответствовать точным правилам и содержать исключительно актуальную информацию. Поэтому лучше создавать YML-файлы автоматически, а не вручную.

Услуги

Чем я могу помочь?

Итак, Вам нужен постоянно обновляемый прайс YML для Вашего интернет-магазина.

Я могу написать небольшой автономный php-скрипт, который этот прайс будет создавать!

Что это за скрипт?

Небольшой файл с расширение .php, представляющий из себя программу на этом языке программирования. При каждом запуске скрипт будет обращаться к базе данных интернет-магазина и создавать (или перезаписывать существующий) YML-прайс.

Как пользоваться скриптом?

Скрипт будет размещаться прямо на Вашем сервере и его можно вызывать на выполнение прямо в браузере.

Если Вам лень при каждом обновлении товарного ряда вызывать этот скрипт, то всегда можно прописать периодический автозапуск, например, средствами cron (скорее всего, Ваш провайдер предоставляет такую возможность).

Что понадобится от Вас?

Если кратко:

  1. Доступ к базе данных
  2. Доступ по FTP
  3. Доступ к админ-панели управления CMS.

Если подробно:

Во-первых, необходим доступ к базе данных: ссылка на mysql, логин, пароль. Нужно проанализировать структуру таблиц, в которых хранится информация о продукции, чтобы составить правильные команды и запросы.
Доступ к базе данных почти обязателен, хотя, если у Вас очень высокие требования к безопасности, то можно обойтись небольшим дампом из базы данных, достаточным для ознакомления со структурой таблиц из БД. Но если Вы мне вышлете не то что нужно – я не виноват 🙂

Во-вторых, желателен FTP-доступ к хостингу. Не лишней будет проверка работы скрипт именно на Вашем сервере – а то знаете, всякое бывает. Или будьте готовы провести финальное тестирование и окончательную настройку на месте своими силами.

В-третьих, не будет лишним доступ к админ-панели управления CMS. Это сильно поспособствует пониманию какую информацию можно вытащить в YML-прайс. В принципе, всё что надо я могу узнать и из сухих сводок базы данных MySql, но в панели управления CMS со многими нюансами можно ознакомиться быстрее и нагляднее.

После выполнения моей работы, все пароли для доступов можно (и, пожалуй, нужно) сменить.

Корректно?

Безусловно. Я уже выполнил несколько десятков подобных заказов и гарантирую, что сгенерированный YML-прайс устроит Яндекс-Маркет. Помимо технических требований я в курсе многих подводных камней, которые могут возникнуть с YML и все известные мне нюансы будут обязательно учтены. О потенциальных проблемах я даже когда-то написал статью на Хабре.

Безопасно?

Конечно. Хотя в скрипте прописаны параметры доступа к базе данных, получить эту информацию злоумышленнику будет невозможно, даже зная точный адрес файла со скриптом. Так как файл представляет из себя программу на PHP, код программы можно узнать только имея FTP доступ к файловой системе хостинга (который имеется только у Вас, не так ли?). Обращение к файлу по прямой ссылке всего-навсего запустит скрипт, в результате чего обновится файл YML. А вот доступа к тексту программы у посторонних людей не будет.

Интеграция в CMS

Её нет. Я не являюсь специалистом по движкам, благо их великое множество. Скрипт будет представлять из себя небольшую автономную программу на языке PHP и НЕ будет создан в виде компонента/плагина/модуля/виджета. Будут учтены только конкретные структурные особенности базы данных (для получения информации о продукции) и не более того.

Время

На всё про всё – два-три дня.

Это срок для создания, установки и тестирования.

Деньги

Стоимость – $20-35, зависит от сложности Вашей CMS.

Сумма небольшая, поэтому, думаю, полная предоплата при первом сотрудничестве не вызовет особых затруднений. При последующих заказах — оплата 50/50.

Контакт

Заинтересовало? Есть вопросы? Пишите!

valemak.com@gmail.com
www.valemak.com

Мои аккаунты на биржах фрилансеров:

Яндекс

Помимо YML для Яндекс.Маркет, также могу сделать аналогичные экспортные XML-файлы для других партнёрских сервисов Яндекса.

А именно:

  1. YRL-файл для Яндекс.Недвижимость
  2. YVL-файл для Яндекс.Работа

Цена/сроки $35, 3-4 дня.

Другое

Часто приходилось делать XML-фиды для партнёрских программ:

  1. WikiMart
  2. Berito
  3. Google.Покупки
  4. ЦИАН
  5. TIU.RU
  6. … и многих других.

Цена/сроки будут аналогичными. Создание скрипта для генерации этих XML зачастую практически вообще не отличается от создания YML, иногда всё строится по похожим принципам.

Ссылки

Дополнительная информация:

Яндекс

Вопросы и ответы

Официальная спецификация YML

Валидатор

Требования к методу передачи данных

Требования к рекламным материалам

Хабрахабр

Корректный YML для Яндекс.Маркета. Взгляд программиста

Яндекс.Маркет – to be or not?

Размещение товаров на Яндекс.Маркете. Типичные проблемы и их решение

Ночное ворчание о Яндексе, Маркете и интерфейсах вообще

© Валерий Макаров

YML-генератор

Конвертируйте данные Вашего интернет-магазина в YML-прайс и участвуйте в товарных программах Яндекса и популярных прайс-агрегаторов

Как работает YML-генератор?

Генератор индексирует сайт и обрабатывает разметку RDF Schema.org и Open Graph для товаров, а также использует уникальный алгоритм автоматического определения товарных предложений, конвертируя полученные данные в формат Yandex Market Language. Теперь создать YML-прайс — легко и быстро как никогда!

Подробнее о возможностях сервиса >

Распространяйте больше информации о Ваших товарах!

YML позволяет консолидировать и передавать информацию о товарных предложениях Вашего интернет-магазина в сервисы Яндекса — резульаты поиска и Яндекс-Маркет: URL товаров на Вашем веб-сайте, актуальные цены, наименование и описание номенклатуры, а так же возможность и стоимость доставки.

Кроме того, формат YML за время своего существования превратился в один из наиболее распространенных форматов обмена информацией о товарах, который используется для импорта во многие популярные прайс-агрегаторы и веб-сервисы.

YML-генератор

Конвертируйте данные Вашего интернет-магазина в YML-прайс и участвуйте в товарных программах Яндекса и популярных прайс-агрегаторов

Порядок добавления файла YML Market Yandex

 

Шаг: 1

Путь к добавлению YML Market Yandex файла: Справочники> Источники> Добавить XML(YML) файл

Перед вами открывается список с уже добавленными файлами (если таковы есть). Выбираем кнопку «Добавить XML(YML) файл»

Шаг: 2

 

В активном окне выбираем категорию которой соответсвует ваш товар.

 

Шаг: 3

 

Выбираем тип товара которому соответсвует Ваш товар.

 

Шаг: 4

 

  • Прописываем название вашего прайса
  • Выбираем тип загрузки вашего прайса: у вас есть возможность загрузить ваш файл с собственного компьютера, с внешних источников — HTTP, FTP.

 

Шаг: 5

 

При выборе типа загрузки — HTTP; заполните поля со «*» и нажмите сохранить.

 

В системие создается новый прайс с Вашим именем.

Добавить комментарий

Закрыть меню