Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

16.09.2023 в 16:06, Rassol2 сказал:

3) Мой модуль не может парсить эксель документы. Все же он создавался как парсер сайтов.

 

Зачем это нужно, если есть АОП ? Ответ только один: для экономии, чтобы не покупать два модуля, а обходиться одним...

А мне больше хотелось бы видеть реализацию работы с "кривыми" выгрузками xml/yml (без правки самих файлов модуля), которых не мало, а не дублирование того, что и так уже реализовано у других...

  • +1 1
Надіслати
Поділитися на інших сайтах


16.09.2023 в 08:33, Axelenz сказал:

 

Зачем это нужно, если есть АОП ? Ответ только один: для экономии, чтобы не покупать два модуля, а обходиться одним...

А мне больше хотелось бы видеть реализацию работы с "кривыми" выгрузками xml/yml (без правки самих файлов модуля), которых не мало, а не дублирование того, что и так уже реализовано у других...

Над этим думаю. 
Уже есть наброски парсера xml 2.0 который может ускорить процес обработки xml раз в 100 , только еше все на уровне моих внутренних бета тестов. Если вcе пройдет успешно то прокаю xml и реши вопрос с внесением правок в файл. Но во второй волне обновления парсера xml. 

  • +1 1
Надіслати
Поділитися на інших сайтах

16.09.2023 в 16:06, Rassol2 сказал:

3) Мой модуль не может парсить эксель документы. Все же он создавался как парсер сайтов.

Было бы круто. Хорошее решение было бы в одном модуле парсить все возможные форматы от поставщиков.

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

Да хотелось би еще функций больше,

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

но все еще впереди, тут и так под капотом данного модуля не мало.

  • +1 1
Надіслати
Поділитися на інших сайтах

Прайсы в .xls это как анахронизм какой-то... Да, раньше почти все сайты в этом формате отдавали данные, но сейчас то xml/yml это давно уже формат де-факто... ну иногда ещё и CSV встречается, но то такое (формат полностью не стандартизирован)... 

Не думаю, что модулю это вообще нужно... вперёд лучше смотреть, а не оглядываться назад.

Надіслати
Поділитися на інших сайтах


16.09.2023 в 09:22, Axelenz сказал:

Прайсы в .xls это как анахронизм какой-то... Да, раньше почти все сайты в этом формате отдавали данные, но сейчас то xml/yml это давно уже формат де-факто... ну иногда ещё и CSV встречается, но то такое (формат полностью не стандартизирован)... 

Не думаю, что модулю это вообще нужно... вперёд лучше смотреть, а не оглядываться назад.

Если и будет загрузка прайс листов то только csv. Другое вообще пока не рассматриваю. Xml / yml уже есть. 

Надіслати
Поділитися на інших сайтах

Здравствуйте.

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

2. Есть ли варианты результат выводить в гугл таблицы, а не файл? 

Змінено користувачем Gherman002321
Надіслати
Поділитися на інших сайтах


Зачем при отправке запроса "Парсинг в ИМ" удалять ссылки с ответом ошибок? Это же не позволяет с помощью скриптов устанавливать условие на такие ссылки. Конечно можно установить, но нагрузка на такое действие в разы выше, чем когда бы не удалялась ссылка и запускался скрипт для неё. Лучше пусть все ссылки попадают в массив или сделать настройку для возможности пропускать ссылки с ошибками, а в массиве уже можете установить условие не добавлять инфу в товар при ошибке (согласно условиям границ, оно и так ничего не добавит).

В "Настройки парсинга" не хватает установки регулярного выражения или установки возможности варианта (вариант 1|вариант 2) - меньше границ нужно будет создавать.

Надіслати
Поділитися на інших сайтах

19.09.2023 в 12:26, buslikdrev сказал:

В "Настройки парсинга" не хватает установки регулярного выражения или установки возможности варианта (вариант 1|вариант 2) - меньше границ нужно будет создавать.

 

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

Надіслати
Поділитися на інших сайтах


19.09.2023 в 04:26, buslikdrev сказал:

Зачем при отправке запроса "Парсинг в ИМ" удалять ссылки с ответом ошибок? Это же не позволяет с помощью скриптов устанавливать условие на такие ссылки. Конечно можно установить, но нагрузка на такое действие в разы выше, чем когда бы не удалялась ссылка и запускался скрипт для неё. Лучше пусть все ссылки попадают в массив или сделать настройку для возможности пропускать ссылки с ошибками, а в массиве уже можете установить условие не добавлять инфу в товар при ошибке (согласно условиям границ, оно и так ничего не добавит).

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

Скрытый текст

K0QP6GR.png


Если я правильно понял что вы имеете в виду.

 

19.09.2023 в 04:26, buslikdrev сказал:

В "Настройки парсинга" не хватает установки регулярного выражения или установки возможности варианта (вариант 1|вариант 2) - меньше границ нужно будет создавать.

Немного подробнее можете сказать что про что идет речь ?
Вы имеете в виду эти поля ?
 

Скрытый текст

JQmee52.png

 

Надіслати
Поділитися на інших сайтах

19.09.2023 в 13:53, Rassol2 сказал:

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

Скрытый текст
		//Отправка данных на собственные скрипты. 
		if(!empty($script_tasks)){
			
			$script_data = ['setting'=>$setting, 'browser'=>$browser, 'dn_id'=>$dn_id, 'urls'=>$urls];
			$script_data = $this->scriptController(1, $dn_id, $script_tasks, $script_data);
			$setting = $script_data['setting']; 
			$browser = $script_data['browser'];
			$urls = $script_data['urls'];
			unset($script_data);
		
		}

		//делаем мульти запрос
		$datas = $this->requestConstructor(1, $urls, $dn_id, $browser, $setting, 0);

  	foreach($datas as $key => $data){

			//Отправка данных на собственные скрипты. 
			if(!empty($script_tasks)){
				$script_data = ['setting'=>$setting, 'browser'=>$browser, 'dn_id'=>$dn_id, 'form'=>$form, 'permit'=>$permit, 'url'=>$link];
				$script_data = $this->scriptController(2, $dn_id, $script_tasks, $script_data);
				$setting = $script_data['setting']; 
				$browser = $script_data['browser'];
				$permit = $script_data['permit'];
				$form = $script_data['form'];
				unset($script_data);
			
			}

 

"Парсинг в ИМ" $this->requestConstructor( удаляет ссылку 404 в итоге её нельзя обработать при действиях 2 и 3. В результате приходится делать запрос на получение всех ссылок 404 и проводить с ними необходимые операции в действии 1. А для уменьшения данных в выборке, чтобы не повторять операции, нужно удалять ошибку 404 или добавлять свой столбец для установки проверки.

		$error = $this->getUrlToPars($script_data['dn_id'], $script_data['setting']['link_list'], '404');

		foreach ($error as $result) {
			/* необходимые операции с товаром по ссылке 404 */ 
		}

 

 

Этот код не даёт записать ошибку 301 в таблицу pars_link и без вариантов по 301 ссылку никак не обработать (не построить условие для товара).

Скрытый текст
  	//для деления ссылок по спискам.
  	if($data['http_code'] > 302){ 
  		$value['http_code'] = $data['http_code'];
  	} 

 

 

 

19.09.2023 в 13:53, Rassol2 сказал:

Немного подробнее можете сказать что про что идет речь ?
Вы имеете в виду эти поля ?

Да, эти поля.

 

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

Скрытый текст

граница 1 Текст начала парсинга:
<td class="_fact"  >Москва</td>{skip}<td  data-price-val="1"> <div class="pr" >

 

граница 2 Текст начала парсинга:
<td class="_fact"  >Смоленск</td>{skip}<td  data-price-val="1"> <div class="pr" >

 

А могло быть так:

Скрытый текст

граница 1 Текст начала парсинга:
<td class="_fact"  >{reg[#(Москва|Смоленск)#]}</td>{skip}<td  data-price-val="1"> <div class="pr" >

 

Надіслати
Поділитися на інших сайтах

19.09.2023 в 06:56, buslikdrev сказал:

Этот код не даёт записать ошибку 301 в таблицу pars_link и без вариантов по 301 ссылку никак не обработать (не построить условие для товара).

Это не ошибка, это ответ который гласит что страница перенесена на другой адрес, на постоянной основе.
Идете в настройки запросов и включаете переход по редиректам.
 

Скрытый текст

sJwmi0U.png

И модуль будет переходит и получать код страницы, и нинужно ни каких спец методов, и скриптов для этого. Это стандартный сценарий.
(кроме случаев где есть какой то хитрый код на js с проверкой браузера и получением кук и последующим редиректом)
Но в стандартен это обычная ссылка без особенностей.

PS. Вы бы с таким рвением как вы лезете в код модуля лезли в настройки и читали что вам доступно. Можете и в код не прийдется смотреть )

 

По второму вопросу, понятно.
Но на всякий случай спрошу, а через поиск замену почему не хотите решить это вопрос ?

Надіслати
Поділитися на інших сайтах

@buslikdrev Только желательно конструктивно.
Без гибких ответов по типу.
А зачем через поиск замену если можно было бы сделать как я показал.
Потому что такой ответ не имеет смысла, с таким успехом можно и через поиск замену решить вопрос.

В принципе я не против такого функционала, просто пока он не был востребован, в массе своей, и по этому его пока нет.

Надіслати
Поділитися на інших сайтах

  

19.09.2023 в 15:07, Rassol2 сказал:

В принципе я не против такого функционала, просто пока он не был востребован, в массе своей, и по этому его пока нет.

Всем плевать, вот и не востребован.

 

19.09.2023 в 15:04, Rassol2 сказал:

Идете в настройки запросов и включаете переход по редиректам.

Для обработки товара, нужно задать условие такое же, как и при 404. На сайте донора 301 идёт на категорию. Поэтому мне наоборот переход по редиректам отключить. В общем не узнать, в какой ссылке был переход - значит нужно велосипед делать для поиска ошибки в логах и дёргать файл лога каждый запрос (для обработки 301), как и таблицу pars_link (для обработки 404).

 

19.09.2023 в 15:04, Rassol2 сказал:

По второму вопросу, понятно.
Но на всякий случай спрошу, а через поиск замену почему не хотите решить это вопрос ?

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

+ 2 условия минимум.

Надіслати
Поділитися на інших сайтах

19.09.2023 в 09:06, buslikdrev сказал:

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

+ 2 условия минимум.

Тут я понимаю что мой ответ вам не понравится. Но я вынужден.
На данный момент этот вопрос можно решить через поиск замену, а востребованности нет. А значит пока что это не будет внедрено. Возможно в будущем.
 

19.09.2023 в 09:06, buslikdrev сказал:

Для обработки товара, нужно задать условие такое же, как и при 404. На сайте донора 301 идёт на категорию. Поэтому мне наоборот переход по редиректам отключить. В общем не узнать, в какой ссылке был переход - значит нужно велосипед делать для поиска ошибки в логах и дёргать файл лога каждый запрос (для обработки 301), как и таблицу pars_link (для обработки 404).

Это довольно специфический сценарий. И хорошо что вы смогли найти решение через скрипты, дергая логи и так далее. По праву универсальный модуль неправда ли. ;-)

Изменить это нельзя так как 301 и 302 ответ сервера, это не ошибка это констатация факта того что страница была перенесена.
И по подавляющем случаи этот просто перенос.
К примеру такой же ответ отдает опенкарт когда вы заходите по query string и вас переадресует на ЧПУ. Из за такой стандартной процедуры записывать в логи ошибку, делать отказ от обработки и помешать ссылку в список не обработанных будет крайне не правильно.
Но я рад что вы смогли найти свое личное решение этого вопроса. Это круто.:eek:

 

Цитата

Всем плевать, вот и не востребован.

Так и работает рынок. Если есть спрос появляется предложение.

Надіслати
Поділитися на інших сайтах

Внимание.
Мне нужен проект с xml где после делания файла будет 5000 + товаров. Нужно для тестирования ускорения работы парсинга xml.
Пришлите готовый проект с настроенным созданием товаров и тд. Буду признателен.

Надіслати
Поділитися на інших сайтах

19.09.2023 в 23:16, Rassol2 сказал:

Внимание.
Мне нужен проект с xml где после делания файла будет 5000 + товаров. Нужно для тестирования ускорения работы парсинга xml.
Пришлите готовый проект с настроенным созданием товаров и тд. Буду признателен.

Отписал в ЛС

Надіслати
Поділитися на інших сайтах

Найден баг.

В модуле в последней версии найден баг с загрузкой файлов.
Поправлю к следующему обновлении. Сейчас файлы грузятся битые.
Обновление попробую сделать сегодня завтра.

  • +1 1
Надіслати
Поділитися на інших сайтах

21.09.2023 в 15:44, buslikdrev сказал:

Настройки запроса/Собственные заголовки - не удаляется \r, а только \n

Не понял что вы имеете в виду.

Надіслати
Поділитися на інших сайтах

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

Старая технология.

 

13466 ссылок ориентировочно будут обработаны через 55 минут и 47 секунд.
 

Скрытый текст

nuwwmtD.png

 

Новый подход

46 минуты 32 сек на том же обьеме работы.

Скрытый текст

66Taz24.png

 

Здесь я попробовал исключить веб запросы при обработке xml, это самое дорогое в парсинге.
Дорого как по времени так и по ресурсам. В новом подходе это будет исключено.

По мимо прироста скорости должно снизится потребление ресурсов, то есть ниже нагрузка. Что то же должно порадовать обладателей бюджетных хостингов.
Собственно прирост на производительном хостинге составил около 17% при понижении потребления, что не может не радовать.
Хотя я ожидал большего. Завтра закончу и выложу релиз, а от вас просьба замерить производительность.

Так как мои расчеты показывали больший прирост.

Надіслати
Поділитися на інших сайтах

22.09.2023 в 12:27, Rassol2 сказал:

Не понял что вы имеете в виду.

 

// fix
if ($script_data['browser']['header_list']) {
	foreach ($script_data['browser']['header_list'] as $key => $result) {
		$script_data['browser']['header_list'][$key] = trim($result);
	}
}
Надіслати
Поділитися на інших сайтах

Обновление v4.9-7_beta

 

1) Исправлена один недочет в парсинге файлов.
2) Ускорен париснг XML/YML примерно до 20%
 

Просьба, обратит внимание на скорость до обновления и после и описаться. Так как данная инновация не является финальной и все будет зависит от от вас.
Если не будет отзывов. Или не будет повышение производительности у вас, тогда данное изменение будет аннулировано.
Решение спорное и требует тестов в разных сценариях.

Скорость должна увеличится именно на парисинг нарезанных xml файлов.
Так же при больших потоках производительность должна повысится.

Надіслати
Поділитися на інших сайтах

Для тех кто хотел поиск замену на весь файл XML.
Решил попробовать внедрить и понял почему этого нет))

Если мы хотим сделать поиск замену на весь файл XML где то здесь.
 

Скрытый текст

VNgr70A.png

 

То сталкиваемся с большой проблемой.
Модуль не держит в памяти сразу весь xml а читает его построчно, а значит нельзя применить правило поиск замены к всему файлу.
Так сделано что бы модуль мог обрабатывать файлы большого обьема и не крашится из за нехватки ОЗУ.
 

Так что поиск замену можно применять только к нарезанным товарам.
Эта задача тоже пока не реализуем.

В теории это можно сделать, но на данный момент цель не оправдывает средства.

Надіслати
Поділитися на інших сайтах

24.09.2023 в 23:29, Rassol2 сказал:

В теории это можно сделать, но на данный момент цель не оправдывает средства.

А зачем поиск/замена на весь xml если это и так дальше реализовано в соответствующей вкладке ? Из-за ошибок в блоке категории возникают дальнейшие проблемы. Возможно ли сделать поиск/замену только для этого блока ? 

Надіслати
Поділитися на інших сайтах


24.09.2023 в 15:49, Axelenz сказал:

А зачем поиск/замена на весь xml если это и так дальше реализовано в соответствующей вкладке ? Из-за ошибок в блоке категории возникают дальнейшие проблемы. Возможно ли сделать поиск/замену только для этого блока ? 

Да возможно, но это супер нелогично.

я понимаю что вам хочется иметь решение проблемы с кривыми Id категорий, но подымать из за этого целый комплекс поиск замены со всеми вытекающими на подобие. 
Создания блока для поиск замены в дизайне. 
Хранить данные в базе. 
Выводить на странице. 
Обработка в пред просмотре. 
Обработка при нарезании. 
Эксопрт этих настроек.

Импорт этих настроек. 
 

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

И вот это все еше и не будет работать на весь файл а только на блок категорий. И это еше нужно объяснить клиентам. 
И самое досадное что это нужно просто что бы удалить parentID="1"

в одной категории. 
 

Если бы это хоть работало на весь файл, то были бы шансы что данный функционал найдет какое-то применение в будущем а так ….. 

 

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.