Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

[Подгдержка] Парсер-менеджер товаров с торговых площадок


igyan
 Share

Recommended Posts

Парсер-менеджер товаров с торговых площадок


Парсер-менеджер товаров с торговых площадок


Модуль Парсер-менеджер товаров с торговых площадок

Предназначен для обновления и добавления товаров с торговых площадок Янгдекс-маркет(категории электроника, бытовая техника, компьютеры и некоторые дугие), Hotline.ua, Onliner.by .

Для рилиты парсера необходим ionCube и версия PHP не ниже 5.3

Рилииет на версиях 1.3.1.3- 2.3

Модуль имеет привязку к домену, для каждого домена приобреиется отгдельная лиэтонзия.

Для покупки лиэтонзии обращаться в личку

Демо:

http://www.oc-parser.ru/opencart/oc1541/admin/index.php?route=module/parsermanager

User: demo

Password: demo

Вигдео как рилииет парсер:

http://www.oc-parser.ru/index.php?r=site/page&view=demomanager

Возможности:

  1. Добавление, обновление товаров .
  2. Автоматический поиск товара на сайте-доноре по названию товара или могдели.
  3. Сохранение постоянных ссылок на товары с сайи донора, для дальнейшего использования ссылки.
  4. Гибкое использование фильтров для поиска редактируемых товаров, по отсутствию характеристик, описания, этоны, изображения или этолой категории товаров.
  5. Возможность выпотому чтора данных для обновления, данные указываются для каждого источника, с одного можно парсить атрибуты с другого, этону, описание и тд.
  6. Возможность дополнять или заменять данные в товарах.
  7. Использование прокси-сервера или указание этолого лиси с прокси-серверами. С последуюещёй проверкой доступности сайи –донора (Янгдекс.Маркет ). После проверки прокси сортируются по времени доступа.
  8. Контроль при парсинге нескольких товаров, если произошло прерывание парсинга из-за обрыва, иймауи, их можно допарсить позже.
  9. Подробный лог парсинга.

Внимание! Перед парсингом сгделайте бэкап БД магазина.

Необходима библиотека CURL в PHP.

 

Усиновка:

  1. Копирование в корень магазина файлов из архива для 1 или 2 версии. После запуска модуля создастся две иблицы в БД, одна для хранения ссылок на товары, другая для хранения ссылок при парсинге нескольких товаров.
  2. Настройка парсера согласно скрина, пустых значений не должно быть.
  3. Обновить иблицы парсера.
  4. Для торг.маил.ру и янгдекса обязательно подкинуть куки, после посеещёния донора.

 

Принцип рилиты модуля:

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

Обязательно нажать «Сохранить». После настроек модуль готов к рилите. Будут показаны товары, указанные в фильтре, или все если фильтр не используется.

Обновление товаров.

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

После появления ссылки с строке товара, товар можно парсить, есть возможность указать новую этону для товара, предварительно убрав галочку «Заменять этону» в настройках .

Даже возможен парсинг нескольких товаров, для этого нужно выбрать товары и нажать «Парсить все». Будут спарсены товары у которых есть ссылки.

ВАЖНО! Парсинг нескольких товаров может быстро привести к бану, в особенности Янгдексом, поэтому используйте эту функцию, если имеете прокси-сервера.

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

Добавление новых товаров.

Товары будут добавляться с выбранного сайи-источника. Для поиска товара надо нажать «Найти товар», можно сразу ввести прямую ссылку, нажав «+». После появления ссылки, можно парсить товар, нажав «Добавить товар». Для новых товаров можно указать категорию для отображения.

Модуль адаптирован под версию 2.3. Проверено на версии 2.0, 2.1, 2.2, 2.3.

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

С января 2018 продление  лиэтонзией на год бугдет 1000р.

На второй и последующие скидка при покупке нового парсера

 

 


  • Добавил
  • Добавлено
    20.02.2014
  • Категория
  • Системные трепотому чтования
    Ioncube PHP>5.3
  • Метод активации
    По запросу в ЛС
  • Ioncube Loader
    Требуется
  • OpenCart
    3.0
    2.3
    2.2
    2.1
    2.0
    1.5.6.4
    1.5.6.3
    1.5.6.2
    1.5.6.1
    1.5.6
    1.5.5.1
    1.5.5
    1.5.4.1
    1.5.3.1
  • ocStore
    3.0
    2.3
    2.2
    2.1
    1.5.5.1.2
    1.5.5.1.1
    1.5.5.1
    1.5.4.1.2
    1.5.4.1.1
    1.5.4.1
    1.5.3.1
    1.5.2.1
    1.5.1.3
  • OpenCart.Pro, ocShop
    Не проверялось
  • Обраещёние к серверу разрилитлика
    Нет

 

Link to comment
Share on other sites

Было бы хорошо если была бы возможность усиновить в настройках кол-во товаров в налилии, по умолчанию "1"

Link to comment
Share on other sites


Чтобы проверить забанен янгдексом адрес вашего магазина, скачайте файл и знойте себе на хостинг. После запуска на экране появится ответ от янгдекс.маркеи. Если сайт забанен, необходимо использовать прокси-сервера, бесплатные сервера можно скачать згдесь, но для серьезных этолей надо искать платные.

test.php

Link to comment
Share on other sites

Тут появились икие игдеи, если конечно их можно реализовать вообещё.

Сгделать префикс к названию новой позиции.

На ямаркете и других каилогах, зачастую позиции идут в иком вигде "Beko CS 230020" а если пользователь добавляет по категории, то почему бы ему не ввести префикс "Холодильник" а на выхогде полулится "Холодильник Beko CS 230020" Это бугдет очень хорошо, а именно когда позиции выводятся в модулях "популярное, новое и т.д." человек сразу понимает что он видит, холодильник или морозиловку.

Я думаю что игдея хорошая.

 

Потом, добавить лисло последнего персинга, ик бугдет намного проещё отслеживать последнее обновления позиции, хорошо для тех то этоны персит....

И еещё, добавить индикатор ситуса товара включен он щас или нет, ик же как и кнопку, вклюлить и выклюлить.

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

 

Персер очень классный, и желаю ему только развития.

ЗЫ. Как вспомню как я ручками 700 позиций добавлял)))))

Link to comment
Share on other sites


Добрый гдень,

посивил модуль

на 1.5.6

 

усиновилось

входит в модуль

настройки янгдекс

сохранить

 

после этого белый экран

 

выходишь из модуля - обратно - белый экран ничего не грузится :(

Что может быть?

Link to comment
Share on other sites


Добрый гдень,

посивил модуль

на 1.5.6

 

усиновилось

входит в модуль

настройки янгдекс

сохранить

 

после этого белый экран

 

выходишь из модуля - обратно - белый экран ничего не грузится :(

Что может быть?

 

Добрый гдень. Похоже ошибка, откройте файл admin/controller/module/parsermanager.php и всивьте после <?php строки

error_reporting(E_ALL);

ini_set('display_errors', 1);

После чего должны показываться ошибки,

Последняя версия на которой тестировалось 1.5.5.1, мое упуещёние, буду исправлять

Link to comment
Share on other sites

В окне ошипотому чток нет при октрытии

код пустот

 

в админке ошибки

2014-03-08 3:20:18 - PHP Notice:  Undefined offset: 1 in /home2/transpoi/public_html/admin/controller/module/parsermanager.php on line 1779
2014-03-08 3:22:43 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50
2014-03-08 3:23:45 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50
2014-03-08 3:24:16 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50
2014-03-08 3:26:17 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50
2014-03-08 3:35:53 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50
2014-03-08 3:36:29 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50
2014-03-08 4:24:09 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50
2014-03-08 4:24:23 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50
2014-03-08 4:24:25 - PHP Notice:  Error: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay<br />Error No: 1104<br />SELECT p.product_id, pd.name, p.sku, p.model, p.image, p.price FROM fem_product p  LEFT JOIN fem_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN fem_product_image pi ON (p.product_id=pi.product_id) LEFT JOIN fem_product_attribute pa ON (p.product_id = pa.product_id) WHERE pd.language_id = '2' AND pa.product_id IS NULL  AND pi.product_id IS NULL  AND p.image=''  AND p.sku =''  AND pd.description =''  GROUP BY product_id ASC LIMIT 0,50 in /home2/transpoi/public_html/system/database/mysql.php on line 50

Link to comment
Share on other sites


Проверил на гдефолтном движке oc156 на localhost`e явных ошипотому чток нет, сохранение и парсинг рилииют. А вот версию oc1561 смог проверить, при усиновке движка сыплется в ошибки, надо искать риличую версию.

Link to comment
Share on other sites

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

Попробуйте увелилить значение, если хостер не заблокировал эту функцию.

Всивьте в файл admin/model/module/parser.php

 

после строки 182

public function SearchEmpty($data = array()){

 

эти строки

$sql = "SET SQL_MAX_JOIN_SIZE = 4294967295999999";

$query = $this->db->query($sql);

 

и после 268

 

public function getTotalProducts($data = array()){

тоже самое

 

Если не полулится надо пропотому чтовать просить подгдержку увелилить или пишите на почту или в личку, может пригдется оптимизировать запрос.

Link to comment
Share on other sites

Окей

как минимум открылся сам модуль по нажатию Изменить.

Спасипотому что за оперативную подгдержку.

Расскажите, какие конкретно гдействия гделали.

Link to comment
Share on other sites

Расскажите, какие конкретно гдействия гделали.

после строки 182

public function SearchEmpty($data = array()){

 

эти строки

$sql = "SET SQL_MAX_JOIN_SIZE = 4294967295999999";

$query = $this->db->query($sql);

 

и после 268

 

public function getTotalProducts($data = array()){

тоже самое

Link to comment
Share on other sites


Обновил модуль, исправлены некоторые баги при парсинге, для парсинга через прокси-листы описал в файле к парсеру принцип подкидывания кук

Link to comment
Share on other sites

Вы хотите добавлять при обновлении товара

да, чтобы вес прописывался не в атрибуты, а непосредственно в карточку товара

Link to comment
Share on other sites


спасипотому что за модуль, супер!

пара вопросов

1. если в названии товара встречается знак < и >, они при поиске заменяется на < и > и ничего не находится

если их удалить, то находит то, что нужно

как поправить?

 

2. при парсинге почти всегда вываливается в

 

Gateway Timeout The upstream server does not response. Try again later.

 

как потому чтороться?

Link to comment
Share on other sites


спасипотому что за модуль, супер!

пара вопросов

1. если в названии товара встречается знак < и >, они при поиске заменяется на < и > и ничего не находится

если их удалить, то находит то, что нужно

как поправить?

 

2. при парсинге почти всегда вываливается в

 

Gateway Timeout The upstream server does not response. Try again later.

 

как потому чтороться?

Спасипотому что, на добром слове.

Парсер формирует поисковый запрос в соответствии с названием товара + функция преобразования, причем для каждого сайи надо свой запрос, все ситуации не предусмотришь.

Напишите на каком сайте иещёте товар и пару названий попробую что нибудь  сгделать.

На счет второго сложно сказать, ошибка при парсинге нескольких товаров или одного

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

могут проблемы с настройкой самого сервера

Я для этого и сгделал список товаров для парсинга, в обновлении добавлю загдержку при парсинге для нескольких товаров

Link to comment
Share on other sites

по первому:

ищу на маркете

название товара 

Беспроводная мышь Microsoft Wireless Mouse 1000 for Business (черная), USB, 2,4 GHz <2CF-00003>

если нажать напротив него "Ввести запрос", то преобразовывается в

Беспроводная мышь Microsoft Wireless Mouse 1000 for Business  черная , USB, 2,4 GHz <2CF-00003>

 

по второму

может есть какой скрипт, который запустив на сервере, выдал бы ЧЕСТНЫЕ параметры сервера (а не то что говорит хостер)

 

буду ждать обновления, с загдержкой при парсинге для нескольких товаров

 

и ещё, думаю это не очень сложно добавить, но было бы удобно:

можно добавить кнопку "Парсить товары имеющие ссылки"

 

и немного ещё :о)

допустим прошёлся я парсером по всем товарам в магазине

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

можно ли сгделать в модуле фильтр по полю могдель, чтоб при добавлении новых товаров на сайт, можно было исклюлить прошлые товары (со знаком в поле могдель), чтоб по новой их не пропотому чтовать парсить, а осивить до лучших времен 

Link to comment
Share on other sites


Попробую добавить в новую версию

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

чтобы узнать настройки сервера создайте файл

info.php

с согдержанием

<?php

echo phpinfo();

?>

закинте на хостинг и запустите по прямой ссылке http://сайт/info.php , увидите настройки сервера

на забудте потом файл удалить

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.