Яндекс.Маркет - парсер

J
На сайте с 02.02.2009
Offline
53
3254

Образовался модуль для Perl - в виде парсера Яндекс.Маркета.

Модуль оборудован юнит-тестами, работает шустро и уверенно, обладает способностью подставлять разные юзер-агенты, а так же работать через прокси и интерфейсы, и умеет делать следующее:

1. Искать по Маркету по запросу.

К примеру (дальнейшая выдача для Германии) -

$results = $parser->searchResults('asus eee pc');

в $results:


model_description => нетбук, 1024x600, 1.27 кг, 262x36.5x178 мм, Wi-Fi, SD Card, графика: Intel GMA 3150, WinXP Home
model_title => ASUS Eee PC 1001P (Atom N450 1660 Mhz/10.1"/1024x600/1024Mb/160Gb/DVD нет/Wi-Fi/WinXP Home)
model_href => /model.xml?hid=91013&modelid=6126181&show-uid=858567312720168231
yandex_inner => 1
model_price => 12391
model_image => http://mdata.yandex.net/i?path=b0322175226_img_id6502072108311114098.jpg&size=2
suggested_vendor => ASUS
model_categories =>
Компьютеры [/catalog.xml?hid=91009]
Ноутбуки [/catalog.xml?hid=91013]


model_description =>
model_title => мобильный пк (ноутбук) asus eee pc 1001p atom-n450/1g/160g/10"/wifi/l044/black/xph (90oa22b22111937e10aq)509497
model_href => http://market-click2.yandex.ru/redir/GAkkM7lQwz6kEtXSvIPZ1stftk-CnsW7ntwZw2Nhtd0BbccHuCUVlagulQH79V0CcaHQgH9fiRFv5Va_uAbUirMDjgcDxLvPfTyz5MqhvhrXEKZvewhei0QNM3_p1RI0Ua-ASgVipZvOGJ_EYqqdd28MzrZZXnx-_64Jgqsnm629_zGNPgASqcaNkJy_vtBCpzc1K-kWzaz7v3meCQZyl8U26ZPv5H4yRA7iqMKlCM-WAvMA9kWIUGggR39SvqQ3VLJJAKp5jqYhxnw46Pdx4uYpVcgv1-UOVOzlQmsZjNMsxAHlpN7hWQ?data=QVyKqSPyGQye%2dkL9wsh97EXBMqwOiQlDcg%5fDGlCcgnS4WkcdXt0fT6OyKqYyrMssZjiDXmIp6LRdYwYX0K%5fxHv9b2AJpduhH&b64e=2&sign=eff0be7f905ad06984a0dec8785b6699&keyno=1
yandex_inner => 0
model_price => 12391
model_image => /i/nbsp.gif
suggested_vendor => asus
model_categories =>
Компьютеры [/catalog.xml?hid=91009]
Ноутбуки [/catalog.xml?hid=91013]
......
# t_search_query: got 57 results, 6 pages

Из неочевидных полей - yandex_inner - на Яндекс-страницу ли ссылка, или же будет редирект вовне.

Категории - упорядоченный по логике массив.

2. Получение информации о модели:


$model_info = $parser->getModelInfo('/model.xml?hid=91013&modelid=6126181&show-uid=447261412720157231');

в $model_info содержится


$VAR1 = {
'images' => [ 'http://mdata.yandex.net/i?path=b0322175227_img_id7475512701493463129.jpg',
'http://mdata.yandex.net/i?path=b0322175226_img_id6502072108311114098.jpg',
'http://mdata.yandex.net/i?path=b0322175228_img_id1084025570236576060.jpg',
'http://mdata.yandex.net/i?path=b0322175229_img_id3574034516353689047.jpg',
'http://mdata.yandex.net/i?path=b0322175230_img_id1601030186408180440.jpg',
'http://mdata.yandex.net/i?path=b0322175226_img_id6502072108311114098.jpg'
],
'content' => {
'Экран' => {
'Тип экрана' => 'матовый',
'Видеопамять' => ' SMA ',
'Тип графического контроллера' => 'встроенный',
'Графический чипсет' => 'Intel GMA 3150',
'Подсветка экрана' => 'светодиодная',
'Дисплей' => '10.1 дюймов, 1024x600, широкоформатный'
},
'Общие данные' => {
'Установленная операционная система' => 'WinXP Home',
'Процессор' => 'Atom 1660 МГц',
'Тип' => 'нетбук',
'Память' => '1024 Мб DDR2',
'Чипсет' => 'Intel NM10',
'Код процессора' => 'N450'
},
'Питание' => {
'Аккумулятор' => 'время работы до 11 ч, Li-Ion',
'Количество ячеек аккумулятора' => '6'
},
'Связь' => {
'Интерфейсы' => 'USBx3, VGA (D-Sub), вход микрофонный, выход аудио/наушники, LAN (RJ-45)',
'LAN/Modem' => 'сетевая карта 10/100 Мбит/c',
'Беспроводная связь' => 'Wi-Fi 802.11g'
},
'Слоты расширения' => {
'Поддержка карт памяти' => 'SD, SDHC',
'Устройство для чтения флэш-карт' => 'есть'
},
'Устройства хранения данных' => {
'Жесткий диск' => '160 Гб Serial ATA',
'Оптический привод' => 'DVD нет'
},
'Дополнительно' => {
'Особенности' => 'слот блокировки',
'Устройства ввода' => 'Touchpad',
'Вес' => '1.27 кг',
'Размеры (ДхШхТ)' => '262x178x36.5 мм',
'Встроенный микрофон' => 'есть',
'Дополнительная информация' => 'время работы до 5ч. с батареей из трех ячеек',
'Веб-камера' => 'есть, 0.3 млн пикс.',
'Встроенные колонки' => 'есть'
}
},
'price' => '12391',
'title' => 'ASUS Eee PC 1001P (Atom N450 1660 Mhz/10.1"/1024x600/1024Mb/160Gb/DVD нет/Wi-Fi/WinXP Home)',
'vendor' => 'ASUS'
};

Модуль самообучается на опознавание вендоров товаров - учитывая, что Маркет не выдаёт отдельную строчку вендора в результатах поиска. Чем больше вы прогоните поиска - тем качественнее будет определяться вендор.

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

Модуль зависит от пакетов:

WWW::Curl::Easy

URI::Escape;

DB_File;

То есть, для хорошей работы скрипта предполагается наличие у вас VDS или Dedicated-сервера, - ну или же адекватного саппорта хостера. Обычно эти три модуля уже поставляются хостером, ввиду популярности первых двух :)

В следующем релизе планируется сделать:

1. Вывод списка магазинов, где продаётся товар - с ценами

2. Вывод похожих товаров

3. Что-нибудь ещё - по ситуации.

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

В общем-то при наличии более-менее своих прямых рук (или при использовании гарантированно прямых моих), при использовании парсера получается весьма неплохой сато-магазин.

Не означаю цену, выслушаю предложения в ПМ, выдам на тест (именно на тест - буду приставать с требованиями получения багов) первому со сроком регистрации больше полугода и репутацией больше 10 000.

broken
На сайте с 03.10.2006
Offline
228
#1

если никакой софтины дополнительно ставить на сервер не надо - взял бы потестить. импорт в указанный мною движок вы дописать сможете? за денежку естественно :)

J
На сайте с 02.02.2009
Offline
53
#2
broken:
если никакой софтины дополнительно ставить на сервер не надо - взял бы потестить. импорт в указанный мною движок вы дописать сможете? за денежку естественно :)

Отписал в личку

Seompson
На сайте с 24.05.2006
Offline
172
#3

jumash, очень интересует такой парсер, но не для создания сателлитов, а для своих маркетинговых целей :).

П.С. То, что мне нужно - находится у вас в релизайх следующей версии. Готов взять и потестить.

Качественное продвижение сайтов на выгодных условиях (http://inpromotion.ru). Портфолио выполненных работ (http://inpromotion.ru/portfolio.php). Подробности тут (http://inpromotion.ru/sotrud.php)
J
На сайте с 02.02.2009
Offline
53
#4

Как только допилю - сделаю отдельным постом и напишу в личку. Сейчас для меня это неприоритетная задача - поэтому сроков сказать не могу :)

Seompson
На сайте с 24.05.2006
Offline
172
#5

Из списка дополнительных функций интересуют функции под номерами 1 и 2.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий