Куплю парсер товаров миксмаркет

Объявления о сотрудничестве или предложения услуг/товаров в области интернет-маркетинга
ptutkin
Сообщения: 30
Зарегистрирован: 16 дек 2011, 05:31

Куплю парсер товаров миксмаркет

Сообщение ptutkin » 10 сен 2012, 22:58

Приветствую!

Нужен XML парсер товаров миксмаркета. Скрипт на ПХП не предлагать - будет работать долго (долго это более 15 минут). Скрипт, который будет удалять товары полностью из базы и записывать по новой - тоже не надо.

На данный момент мы работаем с MySQL + сфинкс. Насколько я знаю, то для того чтобы постоянно не удалять товары из базы, а только обновлять цену и наличие, можно писать сразу в индекс сфинкса. Так как самим писать сейчас скрипт нет времени - готов купить/заказать у знающих людей.

Всем заранее спасибо!

Евгений
Эксперт
Эксперт
Сообщения: 276
Зарегистрирован: 20 июл 2005, 08:27
Контактная информация:

Re: Куплю парсер товаров миксмаркет

Сообщение Евгений » 11 сен 2012, 01:10

Скрипт на ПХП не предлагать - будет работать долго (долго это более 15 минут)
С чего это? Основные тормоза бывают из-за манипуляций с базой, и возможно еще из-за операций группировки товаров, если они есть.

ptutkin
Сообщения: 30
Зарегистрирован: 16 дек 2011, 05:31

Re: Куплю парсер товаров миксмаркет

Сообщение ptutkin » 24 сен 2012, 02:39

Да разумеется, этот момент тоже нужно учитывать и еще момент работы скорости диска...

Но на данный момент у нас структура проста:

1. таблица товаров с описанием и моделью (к сожалению рекламодатели в моделях часто пишут такое, что волосы дыбом встают - в результате чего в отдельную таблицу мы эти данные не выносим сейчас. К примеру "Синий мобильный телефон Nokia x6" - супер модель :))))
2. Таблица марок

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

Аватара пользователя
vitocool2
Эксперт
Эксперт
Сообщения: 235
Зарегистрирован: 02 янв 2007, 00:51
Откуда: Пятигорск
Контактная информация:

Re: Куплю парсер товаров миксмаркет

Сообщение vitocool2 » 24 сен 2012, 10:12

Вся база товаров Миксмаркета заливается примерно за 1-2 минуты на серверах средней мощности.

Рецепт:
1) Парсим с помощью PHP + SimpleXML
2) Результат записываем во внешний текстовый файл на диске (тем самым не грузим MySql)
3) Текстовый файл вливаем на бешеных скоростях в БД с помощью LOAD DATA INFILE, предварительно отключив индексы с помощью ALTER TABLE имя_таблицы DISABLE KEYS, а потом включив их ALTER TABLE имя_таблицы ENABLE KEYS

Евгений
Эксперт
Эксперт
Сообщения: 276
Зарегистрирован: 20 июл 2005, 08:27
Контактная информация:

Re: Куплю парсер товаров миксмаркет

Сообщение Евгений » 24 сен 2012, 13:28

vitocool2 очень грамотное решение и ценный совет

ptutkin
Сообщения: 30
Зарегистрирован: 16 дек 2011, 05:31

Re: Куплю парсер товаров миксмаркет

Сообщение ptutkin » 24 сен 2012, 22:19

приветствую!

Спасибо большое за действительно дельный совет!

ptutkin
Сообщения: 30
Зарегистрирован: 16 дек 2011, 05:31

Re: Куплю парсер товаров миксмаркет

Сообщение ptutkin » 23 окт 2012, 01:39

Приветствую "vitocool2"!

А не поделитесь информацией каким образом Вы создаете диапазон цен у товарной карточки/карточках в результатах поиска или каталоге!?

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

1. Есть своя, большая база товарных карточек

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

3. Когда человек из каталога товарных карточек заходит в товар, то осуществляется поиск цен по загруженным прайсам (ну тут все понятно - просто запрос по марке и модели)

Теперь вопрос: как сделать диапазон цен еще в каталоге на товарные карточки. Ну вот скажем пример: http://catalog.onliner.by/mobile/

Если делать приравнивание в момент загрузки-паршенья прайса - то это пипец сколько запросов будет...

Заранее спасибо!

Аватара пользователя
vitocool2
Эксперт
Эксперт
Сообщения: 235
Зарегистрирован: 02 янв 2007, 00:51
Откуда: Пятигорск
Контактная информация:

Re: Куплю парсер товаров миксмаркет

Сообщение vitocool2 » 23 окт 2012, 09:04

ptutkin, для вывода диапазона цен в каталоге и результатах поиска я использую две дополнительные таблицы:

1) Таблица "A" c полями id_mag (ID магазина) и geo_code(геокод магазина). Не забываем, у нас же геозависимая выдача, значит диапазон цен зависит от региона.
2) Таблица "B" с полями id_mag (ID магазина), code_product (ID товара для этого магазина), productID (ID карточки товара).

Имея такие таблички не сложно выводить необходимую информацию по позициям. Вот так это выглядит у меня.

Вся сложность в том, чтобы заполнить таблицу "B". Для этого периодически нужно прогонять все карточки товаров для определения их связей с товарными позициями магазинов по бренду и модели, но это не так уж страшно.

ptutkin
Сообщения: 30
Зарегистрирован: 16 дек 2011, 05:31

Re: Куплю парсер товаров миксмаркет

Сообщение ptutkin » 23 окт 2012, 09:16

Доброе утро!

Спасибо за предложенный вариант! Но я вижу 2 проблемы, если стремиться к идеалу :))

1. В Вашем варианте Вы исходите из того, что ИД товаров в прайсах рекламодателей не меняются (хотя может так оно и есть или они меняются редко) - но что делать с магазинами которые в своих ХМЛ не передают свой внутренний ИД?

2. У меня в базе порядка миллиона товарных карточек и прогонять их будет достаточно долго наверное.

Аватара пользователя
vitocool2
Эксперт
Эксперт
Сообщения: 235
Зарегистрирован: 02 янв 2007, 00:51
Откуда: Пятигорск
Контактная информация:

Re: Куплю парсер товаров миксмаркет

Сообщение vitocool2 » 23 окт 2012, 09:52

Доброе утро)

Даже если ID меняются - это не страшно, ведь таблица "B" периодически обновляется. Магазинов не передающих ID у меня один из 500, и тот не от Миксмаркета )))) (но опять же это не проблема, потому как ID в таких случаях можно формировать автоматически счётчиком).

Идея таблицы "B" сводится к тому, чтобы снизить нагрузку на ваш сервер, если есть потребность в выводе диапазонов цен, кол-ва предложений в магазинах и т.д. в каталоге. Можно обходится и без неё. Для этого просто используем запрос к БД для каждой отдельной позиции каталога, в котором определяем min и max цену для текущего региона по бренду и модели (именно так у меня и было первоначально).

ptutkin
Сообщения: 30
Зарегистрирован: 16 дек 2011, 05:31

Re: Куплю парсер товаров миксмаркет

Сообщение ptutkin » 11 дек 2012, 01:01

Добрый вечер!

Хотелось бы вернуться к вашему рецепту по парсингу XML:
Вся база товаров Миксмаркета заливается примерно за 1-2 минуты на серверах средней мощности.
Рецепт:
1) Парсим с помощью PHP + SimpleXML
2) Результат записываем во внешний текстовый файл на диске (тем самым не грузим MySql)
3) Текстовый файл вливаем на бешеных скоростях в БД с помощью LOAD DATA INFILE, предварительно отключив индексы с помощью ALTER TABLE имя_таблицы DISABLE KEYS, а потом включив их ALTER TABLE имя_таблицы ENABLE KEYS
Дело в том, что был написан скрипт как раз используя PHP + SimpleXML. И парсинг работал относительно нормально. Но тогда файл XML товаров был около 800 Мб.. Сейчас он уже 1,3 Гб и не хватает ресурсов для его парсинга.
Может Вы сталкивались с данной проблемой? Еще хотелось бы узнать, например, сколько у вас выделяется памяти для этого скрипта? И что вы подразумеваете под "средней мощностью серверов"?

вот наш сервак

CPU AMD Opteron 3280 Octacore
Barebone Fujitsu PRIMERGY MX130 S2
RAM 16x Gigabyte RAM

мы под этот парсинг можем использовать 10-12 гигов.

Заранее спасибо.

Аватара пользователя
vitocool2
Эксперт
Эксперт
Сообщения: 235
Зарегистрирован: 02 янв 2007, 00:51
Откуда: Пятигорск
Контактная информация:

Re: Куплю парсер товаров миксмаркет

Сообщение vitocool2 » 11 дек 2012, 11:16

ptutkin, есть выход из вашей ситуации, парсите прайс не целиком, а по отдельным магазинам. Список магазов с прайсами: http://mixmarket.biz/ownshop3/10008/&fid=1
Теоретически, общий файл XML товаров будет постоянно увеличиваться.

ptutkin
Сообщения: 30
Зарегистрирован: 16 дек 2011, 05:31

Re: Куплю парсер товаров миксмаркет

Сообщение ptutkin » 11 дек 2012, 13:08

Приветствую!

Да, над этим мы думали... А вариантов где парсится один большой файл в разумное время Вы не знаете?

Евгений
Эксперт
Эксперт
Сообщения: 276
Зарегистрирован: 20 июл 2005, 08:27
Контактная информация:

Re: Куплю парсер товаров миксмаркет

Сообщение Евгений » 11 дек 2012, 15:25

Была такая проблема, в итоге пришлось отказаться от simplexml. Связано с тем, что simplexml загружает полностью всю структуру документа в оперативную память, и расход памяти получается в разы больше, чем сам xml документ.
Увы, этот класс не приспособлен к большим файлам. Можно качать прайсы отдельно для каждого документа, но следует иметь в виду, что у больших гипермаркетов много товаров и большие xml.
А можно забить на simplexml и посмотреть в сторону XMLReader, который очень экономичен с точки зрения расхода памяти, и вместе с тем быстр.

Аватара пользователя
vitocool2
Эксперт
Эксперт
Сообщения: 235
Зарегистрирован: 02 янв 2007, 00:51
Откуда: Пятигорск
Контактная информация:

Re: Куплю парсер товаров миксмаркет

Сообщение vitocool2 » 11 дек 2012, 15:31

Почитал мануал насчёт XMLReader, звучит не плохо. Думаю, можно его попробовать на практике.

Ответить