Разбор и загрузка данных с любого сайта

22.10.13

Интеграция - Сайты и интернет-магазины

Парсинг любых сайтов. Загрузка данных из таблиц и тегов с сайтов. Загрузка картинок. Анализ DOM-структуры HTML-документа, чтение и произвольная обработка данных. Автопереход по ссылкам внутри сайта. Примеры работы с DOM 1С.

Скачать файлы

Наименование Файл Версия Размер
HTMLParsLoad.epf
.epf 108,03Kb
724
.epf 108,03Kb 724 Скачать
Настройка_КаталогИнфостарт
.dst 79,96Kb
98
.dst 79,96Kb 98 Скачать
Настройка_ЯндексМаркетСписком
.dst 41,49Kb
107
.dst 41,49Kb 107 Скачать
Настройка_РасписаниеЭлектричек
.dst 209,67Kb
58
.dst 209,67Kb 58 Скачать
Настройка_Баш
.dst 1,64Kb
59
.dst 1,64Kb 59 Скачать
Пакет_Настроек_ЯндексМаркет
.rar 2,87Kb
79
.rar 2,87Kb 79 Скачать
ВерсияДляЧтенияТаблиц
.epf 15,15Kb
58
.epf 15,15Kb 58 Скачать

Что позволяет обработка: 1) посмотреть структуру HTML-страницы; 2) настроить интерпретацию узлов так, чтобы прочесть данные в таблицу значений; 3) с определённой степенью надёжности делать постоянные настройки чтения; 4) обрабатывать прочитанное произвольным алгоритмом.

Всё началось с необходимости загрузить данные с Яндекс.Маркета. Нашёл было пару обработок, да вот беда - они устарели и нормально не читают, потому что на яндексе уже другие теги, чуть-чуть другая разметка, и всё. И хоть делай заново. Потом я подумал: структура DOM, пусть в самом общем виде, может быть прочитана. И, значит, маркирована так, чтобы дать понять обработке, откуда брать данные. Тут, правда, обнаружился неприятный сюрприз (из-за которого, в общем, полезность моей разработки существенно падает) – уникальная идентификация большинства узлов структуры страницы невозможна. Не по чему их идентифицировать, к сожалению. Поэтому все предлагаемые для примера настройки – с известной степенью точности. Может понадобиться доработка настроек «напильником». Но именно настроек, а не обработки как таковой. Так что теперь, пусть Яндекс.Маркет меняет формат данных хоть раз в неделю. 5 минут подстройки – и можно опять грузить нужные данные.

Обработка – не то чтобы «готовое решение», а инструмент. Позволяет «пристреляться» к странице и сайту. Позволяет малыми усилиями обеспечить разовое, а чуть большими – постоянное чтение данных с сайта. Для примера к публикации прилагаю настройки, демонстрирующие работу с несколькими общеизвестными сайтами.

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

UPD 2: В версии 1.5 добавлена возможность "идти глубже". Если есть ссылка - задайте настройку для чтения той страницы, куда эта ссылка ведёт, и обработка автоматически прочитает и её содержимое тоже. Глубина погружения теоретически любая (на практике 3 уровня работают ОК). Зачем это: например, на том же Яндексе нужна детализация (со страницы конкретного товара), т.е. большая картинка, характеристики и тд. Теперь это возможно без особенных усилий, главное - 1 раз сделать настройки чтения. Результаты представляются как таблицы значений внутри ячеек более "общих" таблиц значений. В архиве ParsInto находятся 3 файла для Яндекс-Маркета - настройка чтения списка товаров, настройка чтения карточки товара (шаг №1, из списка) и настройка чтения характеристик (шаг № 2, из карточки). Ахтунг! Пути, указанные в полях, надо будет переписать под ваш случай, имена файлов можно не менять. В справку обработки внесены сведения о том, как это делается.

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

UPD: Доделал пакетную загрузку по ссылкам, многостраничную загрузку. Сделана возможность ручной "добивки" неудачно загруженных данных по ссылкам. Повышена избирательность загрузки, точность считывания при одинаковых свойствах ветви. В модуль добавлены полезняшки для работы с html. Исправлена пара багов. 

Кто найдёт баги/глюки - пожалуйста, сообщайте, это приветствуется! Буду исправлять оперативно.

UPD: Добавил версию для чтения именно html-таблиц, в ячейках которых маленькие подветки dom-объектов как деревья значений. Всё в виде таблиц значений, структур и прочая, для желающих написать свой механизм настроек интерпретации или просто использовать для прямого чтения, или как пример. В отличие от первой обработки, использует не DOM через ActiveX окна, а штатные средства 1С (построитель DOM).

См. также

API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3

Сайты и интернет-магазины Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Беларусь Россия Управленческий учет Платные (руб)

Модуль для интеграции с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress. При помощи расширения поддерживаются следующие методы: обмен остатками товаров, обмен ценами, обработка заказов, печать стикеров, загрузка отчетов комиссионеров по API (в том числе Я.Маркет). Подходит для конфигураций Беларуси.

59990 руб.

05.09.2023    6606    83    74    

63

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15663    9    17    

9

Оплата покупок "Долями" в 1С:Розница 2.3 (для работы с сервисом dolyame.ru)

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку.

18000 руб.

19.12.2023    1044    5    0    

5

Обмен данными с сайтом. БП 3.0

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обмен данными с сайтом на платформе 1С:Битрикс (и подобными) для 1С: Бухгалтерия предприятия 3.0.

12000 руб.

18.03.2019    31185    108    100    

62

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17430    6    15    

13

Выгрузка для АВИТО

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Россия Платные (руб)

Выгрузка товаров услуг из 1С для сайта "Авито" раздел "Автозагрузка" выполнена в виде обработки. Обработка подходит для конфигураций УТ, УНФ и Розница. Данная обработка позволяет создавать шаблон с объявлениями для "Авито" - "Автозагрузка".

4200 руб.

07.06.2022    15244    42    56    

37
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. WaterSmith 353 24.12.12 17:46 Сейчас в теме
Как-то не универсально.
{Форма.ОсновнаяФорма.Форма(393,16)}: Переменная не определена (СКДиПостроители)
	мСКДСтруктуры=<<?>>СКДиПостроители.СоздатьСКД(тСтруктурыДляПоиска);
{Форма.ОсновнаяФорма.Форма(448,7)}: Переменная не определена (СКДиПостроители)
	трез=<<?>>СКДиПостроители.ПоместитьРезультатСКДвТаблицуЗначений(мСКДСтруктуры,фп.КомпоновщикСКД,тСтруктурыДляПоиска);
2. Yashazz 4707 24.12.12 17:48 Сейчас в теме
(1) Ох ты ж блин, не ту версию выложил. Ща, поправлю, спасибо!
3. Yashazz 4707 24.12.12 18:36 Сейчас в теме
(1) Залил правильный файл. Ещё раз спасибо.
Кстати, у обработки есть довольно подробная встроенная справка по F1. Надеюсь, написано удобоваримо.
4. tolyan_ekb 104 24.12.12 20:47 Сейчас в теме
Парсятся только сайты без авторизации?
5. Yashazz 4707 24.12.12 21:13 Сейчас в теме
(4) По идее да, но если авторизация успешно пройдена и браузер физически отображает страницу, то, насколько знаю, объектная модель доступна. Вот скачивание по ссылкам (например, картинок) может не получиться, т.к. GET-запрос у меня безо всякой авторизации.
6. lushka 6 25.12.12 06:16 Сейчас в теме
А будет ли она грузить с "закрытого" раздела сайта, необходимо "подпихнуть" сайту сертификат и вылить инфу.
7. DrAku1a 1678 25.12.12 09:37 Сейчас в теме
Если не требуется детальный парсинг, а нужно получить одно-два-три значения из большого HTML, то проще использовать следующую функцию (пример в комментарии):
// Весьма полезная функция для парсинга, например текста HTML.
// например, есть в тексте кусок "Progress: 50%"
// Выполним код:
//   СловоМежду(ИсходныйТекстHTML, "Progress", ":", "%");
//   Сообщить("Прогресс:"+ТекПрогресс+" %");
// В результате получим сообщение: Прогресс: 50%
//
Функция СловоМежду(знач Текст, Слово1, КавычкаСлева="""", КавычкаСправа="""") Экспорт
    Перем п;
    п=Найти(врег(Текст), врег(Слово1));
    Если п<1 Тогда
        Возврат "";
    КонецЕсли;
    Текст = Сред(Текст, п+СтрДлина(Слово1));
    п=Найти(врег(Текст), врег(КавычкаСлева));
    Если п<1 Тогда
        Возврат "";
    КонецЕсли;
    Текст = Сред(Текст, п+СтрДлина(КавычкаСлева));
    п=Найти(врег(Текст), врег(КавычкаСправа));
    Если п<1 Тогда
        Возврат "";
    КонецЕсли;
    Возврат Лев(Текст, п-1);
КонецФункции
Показать
8. Ibrogim 1311 25.12.12 10:26 Сейчас в теме
Отличный механизм. Ещё бы автоматизировать пакетное считывание )
чтобы можно было перебирать однотипные страницы автоматом
Например можно дать возможность пользователю самому формировать код перебора страниц (произвольным алгоритмом)

например страниц вида infostart.ru/public/167437/files/?fduser=yes#users_download

АдресХоста="infostart.ru";
Для  к=13934 по 157152 Цикл			        
  АдресСтраницы=АдресХоста+"/public/"+ Формат(к,"ЧГ=0")+"/files/?fduser=yes#users_download";
16. Yashazz 4707 25.12.12 15:16 Сейчас в теме
(8) Делаю, как раз такой механизм листания по страницам.
(9) Поправил, перезалил. Приношу извинения за невнимательность свою.
9. powerpc 225 25.12.12 12:07 Сейчас в теме
Ошибка при создании СКД: {ВнешняяОбработка.ПолучениеДанныхИзHTML.МодульОбъекта(443)}: Метод объекта не обнаружен (ПревращениеИмениВНаименование)
10. adhocprog 1138 25.12.12 12:15 Сейчас в теме
11. spleen 65 25.12.12 13:10 Сейчас в теме
Нужен был парсер как-то, для сбора инфы и потом выгрузки ее на сайт, написал. Когда рассказал знакомым программерам, что парсер на 1С написан, долго смеялись. Но работало без отказно. Парсер работал месяц без остановки. :)) Новое применение 1С
adhocprog; +1 Ответить
12. adhocprog 1138 25.12.12 13:22 Сейчас в теме
(11) "долго смеялись" - это явно не программисты 1С.
1С 8 рулит :)
Скоро будет робот поисковик, написанный на 8-ке :)
74. noor 12 22.05.13 16:12 Сейчас в теме
(12) adhocprog, Уже есть, и ресурсов много не ест
75. adhocprog 1138 22.05.13 18:13 Сейчас в теме
76. Yashazz 4707 23.05.13 12:32 Сейчас в теме
(74) (75) Коллеги, просьба всё-таки не оффтопить. Тут - обсуждение моей разработки, а не сравнительный анализ нескольких и уж тем более не площадка для рекламы других решений. Лады?
13. Ibrogim 1311 25.12.12 13:30 Сейчас в теме
(11) spleen, тут всё зависит от задачи. Когда то делал обработку по сравнению различных файлов Excel на 7.7 хотя собственно 1С там была не при делах (просто было быстрее сделать так, а надо было срочно...) А один раз нужно было срочно сделать парсер, а 1С не было... Пришлось сделать на базе Excel и его встроенного VB )
14. spleen 65 25.12.12 13:39 Сейчас в теме
(13) Ibrogim, Просто сам по себе 1с не для этого. Но, как показывает практика, скорость написания парсера на 1с не больше чем на php. А с учетом отладчика, думаю даже быстрее. Да простят меня php developers. ;)))))
15. Spacer 355 25.12.12 13:40 Сейчас в теме
Хорошая штука. Самому иногда приходится подобным заниматься.
17. seermak 665 26.12.12 10:32 Сейчас в теме
Ошибка ОбщегоНазначения.ПревращениеИмениВНаименование = нет в стандартном модуле Общего назначения такой процедуры.....
18. Yashazz 4707 26.12.12 12:52 Сейчас в теме
(17) Вы файл когда качали? Скачайте заново, давно уж пофиксено.
19. milkers 2859 26.12.12 14:02 Сейчас в теме
Очень нужен видеофайл с примером формирования настроек!!!!
expert.1c8; +1 Ответить
20. Yashazz 4707 26.12.12 18:22 Сейчас в теме
(19) Хммм. Только после Нового Года, к сожалению. А что, справки к обработке всё же недостаточно? :(
21. zigomodo 27.12.12 12:23 Сейчас в теме
Очень кстати,спасибо.
22. sbv2005 347 27.12.12 18:18 Сейчас в теме
Отличная тема. Давно хочу занятся автопоиском в инете. Жирный плюс.
23. Irmo 29.12.12 08:06 Сейчас в теме
Автор молодец, идея обработки хорошая, мыслите в правильном направлении.

Попробовал настроить скажем для rosohot.ru и salmoru.com, в обоих случаях получились затруднения. Если будет интересно, могу прислать настройки *dst, в которых это видно.

Оба сайта свёрстаны почти без идентификаторов. На rosohot максимум получается выдрать картинку и таблицу характеристик, а тэг DIV, в котором находится описание товара не попадает в СтрокуТаблицы, в которую входит картинка и негде разместить ещё одну директиву СтрокаТаблицы.

На salmoru удаётся выдрать опять таки всё кроме описания. Это потому что описание находится в тэге DIV, вложенном в корневой тэг DIV. И негде разместить все три (!) директивы НачалоТаблицы, СтрокаТаблицы и СтроковаяКолонка. Я вижу два пути: либо дать возможность считать НачаломТаблицы весь документ, либо сделать что-то вроде микса СтрокиТаблицы и СтроковойКолонки в одной директиве...

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

Зато радует гибкость :)
25. Yashazz 4707 31.12.12 00:48 Сейчас в теме
(23) Да, с такими сайтами беда, очень трудно их однозначно читать. Согласен, сделаю, чтобы без директивы "НачалоТаблицы" и чтобы директивы могли быть смешанными.
А вот паразитные колонки, если они пусты, должны удаляться сами (когда включён флаг). Или сделать, чтобы всегда удалялись?

(24) Да, покамест обработка шарит по ссылкам только в случае картинок. Не очень понимаю, какой ещё принцип можно реализовать - ссылок разных много, разве что по расширениям определять, лазить туда или нет...
24. tolyan_ekb 104 29.12.12 13:01 Сейчас в теме
Я правильно понимаю, что если нужен переход по ссылкам на странице (переход внутрь элемента), то это пока нельзя сделать?
26. пользователь 02.01.13 10:47
Сообщение было скрыто модератором.
...
27. krein 63 07.01.13 09:53 Сейчас в теме
Было бы отлично, если бы настройки сделать в один архив с обработкой, чтобы только один раз пришлось скачивать,
ну и если будут доработки указывать версию, чтоб было видно, что есть изменения...
expert.1c8; +1 Ответить
28. dyak84 07.01.13 17:02 Сейчас в теме
По сути идея интересная, нащет универсальности ето врядли. Онним словом появятся деньги посмотрим насколько обработка универсальна. НО удея хорошая, автору спасибо
29. Yashazz 4707 07.01.13 20:33 Сейчас в теме
(28) Универсален только разбор, т.к. модель html-документа везде схожа. Понятно, что с каждым сайтом придётся возиться отдельно.
30. KroVladS 34 09.01.13 16:39 Сейчас в теме
Неплохо бы было добавить видео инструкцию с примером, а то ковырял-ковырял, так до конца и не разобрался. что-то вытаскивает, что-то нет.
31. Stamper 43 10.01.13 13:27 Сейчас в теме
следующий шаг -- DDo1C атака ;)
32. Жолтокнижниг 258 10.01.13 16:32 Сейчас в теме
Хм, идея конечно хорошая, универсальный механизм, но не люблю я DOM - медленный, не все данные отображет, я больше за регулярки.
33. VasMart 11.01.13 09:26 Сейчас в теме
34. noor 12 18.01.13 13:55 Сейчас в теме
А вот мне интересно, ты получаешь вознаграждения за то, что твою разработку скачивают именно с этого сайта. Ведь с меня за скачивание попросили 800 руб. И я не один такой. Если бы этой разработки не было бы, то и сайт этот мне не нужен был. Обрати внимание на Соглашение, если там нет передачи прав на платное распространение твоего интеллектуального труда, то можем засудить их по Закону об авторских правах. От 10000 до 5000000 руб возмещение.
35. Yashazz 4707 21.01.13 16:23 Сейчас в теме
(34) Во-первых, я ничего не получаю. Плюсы мне, в общем-то, пофигу (принцип, по которому их на ИС раздают, мне по сей день неведом), а ещё-то что? Во-вторых, несколько вышеотписавшихся попросили у меня прислать им на почту, и я прислал. В третьих, мне глубоко безразлично, что там есть в Соглашении и чего нет. В четвёртых, скоро планирую выкладывать обновление, более продвинутую версию.

Если бы я собирался "наварить" на публикации, то размещал бы в "магазине", поэтому ваш комментарий, уж извините, не по адресу.
starik-2005; expert.1c8; +2 Ответить
36. noor 12 21.01.13 16:36 Сейчас в теме
Если быть честным, то для нормального парсинга страниц эта обработка не подходит. Нет четко заданных координат данных, которые нужно получать. Так пионэрская разработка. Серьезный парсинг нужен для серьезной агрегации данных и последующей конверсии данных в денежный эквивалент.
37. Yashazz 4707 21.01.13 18:48 Сейчас в теме
(36) Чётко заданные координаты данных, как я выше указывал, для универсала в общем виде невозможны. Эта "пионэрская" разработка уже 2 месяца используется для серьёзного парсинга и конверсии, как вы изволили выразиться, в денежный эквивалент. Если вы можете предложить способ идентификации источника данных в общем случае, в рамках классического DOM, я с большим интересом ознакомлюсь.
expert.1c8; +1 Ответить
38. expert.1c8 22.01.13 22:11 Сейчас в теме
noor странный человек, видимо скачал обработку с оплатой 800 рубасов, а оказалось, что и не подходит она, и нет бесплатной пожизненной поддержки и доработки, да и вообще делает только то, что в описании и не больше )
Если надо готовую вещь, то мне кажется, стоит предложить автору обработки коммерческое сотрудничество,
хотя после таких комментариев неудивительно, если он и откажется.
39. Bober777 26 25.01.13 09:11 Сейчас в теме
Можете ли вы снять видео файл? (Если есть технические проблемы со съемкой, то я помогу.) в котором покажете как выполнять настройку - т.е. как пристреляться к любому сайту. А так механизм супер спасибо +++++.
40. Bober777 26 25.01.13 09:16 Сейчас в теме
что бы не искать мои контакты то скиньте хотя бы инструкцию на sfedorov777@yandex.ru
41. NeLenin 13 30.01.13 10:41 Сейчас в теме
Большая просьба поделиться Вашей обработкой по адресу wrkr2 @rambler.ru .
42. Yashazz 4707 30.01.13 11:06 Сейчас в теме
Уважаемые коллеги, опубликована новая версия, делать какие-то инструкции к старой не буду, а вот к новой попробую успеть, хотя занят преизрядно.
Новая версия умеет "идти глубже". По ссылке, упомянутой на одной странице, умеет читать другую страницу. Жду отзывов и замечаний, т.к. подозреваю, что где-то мог и накосячить.
43. krein 63 31.01.13 22:57 Сейчас в теме
(42) прочитал "UPD 2", что внесены изменения, есть вопрос,
файл HTMLParsLoad.epf остался такой же и с тем же названием, он обновлен уже или нет?

Не хотелось бы конечно навязывать что-то,
но может проще тогда сделать новую публикацию с обновленной версией обработки + инструкцией (возможно даже видео) и примерами настроек в одном архиве (если конечно не ради SM разделены файлы настроек и обработки), а здесь поместить на нее ссылку,
тогда многие бы смогли поставить плюсы еще раз), ведь по сути уже очень много нового будет и тема очень интересная,
а пока непонятно, стоит скачать, или еще не обновлена версия приложенного файла..
Еще кстати вначале пытался найти по слову "парсер", но не нашел, т.к. в названии нет этого слова..

По работе обработки : есть ли общие черты в настройках для работы с сайтами на одинаковых CMS, например Битрикс, Joomla?
или все же настраивать надо очень индивидуально для каждого сайта?
44. Yashazz 4707 06.02.13 11:41 Сейчас в теме
(43) Подозреваю, что новая публикация как раз и может быть расценена как погоня за SM, поэтому всё выкладываю тут. Но, если вы считаете правильным, можно и отдельно, что сегодня-завтра проделаю. Правда, видео, наверно, не осилю, но встроенную справку поддерживаю актуальной.

Насчёт настроек в отдельных файлах - просто не сообразил, честно говоря. Взял да приаттачил, как лежали...
Насчёт слова "парсер" - учту.
Насчёт Битрикса и Джумлы - честно говоря, не знаю. Наверно, если есть общие черты, можно сделать "заготовку", базовую настройку, и дальше её докручивать при нужде. Например, чтение главной страницы, списка товаров - можно единой настройкой, а вот углубление по ссылкам в детальные данные может потребовать напильника.
45. Bober777 26 27.02.13 22:14 Сейчас в теме
Я как интегратор со стажем могу предложить помощь в написании php скриптов, которые будут отправлять инфу пропарсеную в Joomla 2.5... Отправлять файлы только post запросом.
46. Muhin555 24 06.04.13 18:25 Сейчас в теме
конструктивных предложений так и не видно......
Первый замеченный недостаток:
Когда несколько уровней списка поиска, при прочтении первого уровня где есть ссылка на второй уровень создается колонка со структурой в "тДанных", если колонка в "тДанных" - "Картинка", то при выборе ячейки с картинкой открывается "ПанельДанныхЯчейки" на странице "Картинка" и видим эту картинку в "КартинкаДанных", а если выбираем ячейку со "структурой" она открывается на "ПанельДанныхЯчейки" в "ВложенныеРезультаты" где тоже присутствует колонка с картинками уже второго уровня и посмотреть ячейку с "Картинкой" из "ВложенныеРезультаты" нет возможности, т.к. "ПанельДанныхЯчейки" отображает страницу "ВложенныеРезультаты" и не может одновременно показать страницу "Картинка".... тоже самое со структурой третьего уровня - ее просто некуда вообще вывести!
(!!!)Предлагаю на форме сделать отдельную панель "Картинка" а для отображения структуры последующего уровня создавать новую панель, по типу "Панель пользователя" (http://infostart.ru/public/63867/) где можно добавить новую страничку... тем самым избежать ограничение отображения структуры второго уровня.
Второй замеченный недостаток:
При перемещении по страницам на "ПолеОбозревателя" не всегда подтягивается файл настроек dst. Т.е. например на маркете я прочитал список с мобильными телефонами, потом я прошел в список холодильников и после этого структура из dst уже не применяется к новой странице списка... приходится по новой читать структуру новой страницы HTML и загружать настройки dst.
Добавь кнопку "Развернуть" на закладку "НастройкаЧтения" - ЭлементыФормы.дСтруктуры.Развернуть(стро, Истина);
49. Yashazz 4707 09.04.13 18:33 Сейчас в теме
(46) Ага, попробую эти замечания учесть. Быстро не обещаю, но в фоновом режиме буду делать.
(47) Вот и пишите это в Вашем алгоритме. Специфика у каждого своя, обработку можно и нужно дорабатывать напильником в той части, которая касается загрузки данных из таблицы дальше в базу. У меня картинки, как следует из справки, загружаются в колонку таблицы значений и никуда более.
(48) Давайте разберём на Вашей конкретной задаче. Пока не очень понял, что Вас смущает.
47. Muhin555 24 06.04.13 18:35 Сейчас в теме
Так и не понял пока эту фразу "Парсинг любых сайтов. Загрузка данных из таблиц и тегов с сайтов. Загрузка картинок." куда эти картинки загружаются? Если уж загружать, то хотя бы их грузить в хранилище например так:
Спр.Хранилище = Новый ХранилищеЗначения(Новый Картинка(мФайл), Новый СжатиеДанных);
48. Muhin555 24 07.04.13 03:35 Сейчас в теме
"В алгоритме доступна для чтения и записи прочитанная таблица, хранящаяся в переменной ТекущаяТаблица. При установке переменной "Отказ" в Истина таблица изменена не будет." - не совсем понятен принцип Алгоритма постобработки. Можно какой-нибудь пример....
50. noor 12 12.04.13 16:20 Сейчас в теме
Я парсю html твот таким кодом. Главное получше прицелится и все получится. То есть определяем координаты нужных данных методом исключения

ЭтотОбъект.МассивТегов.Очистить();
 ИмяВременногоФайла=КаталогВременныхФайлов()+"1.html";
		  
	HTTPСервис = Новый HTTPСоединение(ЭтотОбъект.АдресСайта,,,,,);

HTTPСервис.Получить(ЭтотОбъект.ФайлНаСайте, ИмяВременногоФайла);
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.ОткрытьФайл(ИмяВременногоФайла, ЭтотОбъект.Кодировка);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеHTML);


СписокИмен=ДокументDOM.ПолучитьЭлементыПоИмени(СокрЛП(ЭтотОбъект.Тег),"*");
Для l = 0  По СписокИмен.Количество()-1 Цикл
	Если ПустаяСтрока(СписокИмен[l].ТекстовоеСодержимое) тогда
		продолжить;
	КонецЕсли;
	Если Найти(ЭтотОбъект.СписокОбрабатываемыхТегов, "#"+СписокИмен[l].ИмяУзла+"#")=0 и
		НЕ ПустаяСтрока(ЭтотОбъект.СписокОбрабатываемыхТегов) тогда
		Продолжить;
	КонецЕсли;	
	Если Найти(ЭтотОбъект.НеобрабатываемыйКласс, "#"+СписокИмен[l].ИмяКласса+"#")>0 Тогда
		продолжить 
	КонецЕсли;
	
	//и
	Если 	Найти(ЭтотОбъект.НеобрабатывемыйРодитель, "#"+СписокИмен[l].РодительскийУзел.ИмяУзла+"#")>0 Тогда
		Продолжить 
	КонецЕсли;
	//и
	Если Найти(ЭтотОбъект.НеобрабатываемыйДочЭлемент, "#"+СписокИмен[l].ПервыйДочерний.ИмяУзла+"#")>0  тогда
		Продолжить;
	КонецЕсли;	
	
	
	Попытка
	Если НЕ ПустаяСтрока(ЭтотОбъект.ОбрабатываемыйКласс) и
		ПустаяСтрока(СписокИмен[l].Гиперссылка) и
		НЕ Найти(ЭтотОбъект.ОбрабатываемыйКласс, "#"+СписокИмен[l].ИмяКласса+"#")>0 тогда
	 Продолжить;
 КонецЕсли;	
Исключение
 КонецПопытки;

	НовСтрока=ЭтотОбъект.МассивТегов.Добавить();
	НовСтрока.НомерЭлемента=l;
	НовСтрока.Содержание=СписокИмен[l].ТекстовоеСодержимое;
	НовСтрока.РодительскийЭлемент=СписокИмен[l].РодительскийУзел.ИмяУзла;
	НовСтрока.ДочернийЭлемент=СписокИмен[l].ПервыйДочерний.ИмяУзла;
	НовСтрока.Класс=СписокИмен[l].ИмяКласса;

	НовСтрока.Тег=СписокИмен[l].ИмяУзла;

	
Попытка
	//НовСтрока.Ссылка=ЭтотОбъект.АдресСайта+СписокИмен[l].Гиперссылка;
	НовСтрока.Ссылка=СписокИмен[l].Гиперссылка;

Исключение
	КонецПопытки;
	
	
//КонецЕсли;	
	
	
//КонецЦикла; 
КонецЦикла;	  
 ЧтениеHTML.Закрыть();

 //последующая обработка
Показать

И самое странное, работает.
51. Yashazz 4707 12.04.13 18:34 Сейчас в теме
(50) Эх, парсить - это ведь не самое главное. Главное - прочитать осмысленно. При абсолютном совпадении имён классов и имён узлов концептуально нельзя применять никакую настройку чтения. Локально, конкретно, "по месту прицелясь" - да, можно. А универсально - уже нет.

Вот есть у вас три одинаковых тега и разных текстовых содержимых, в одной подветке DOM. И дальше-то, как программа поймёт, который текст нужен? Только хардкодить...
52. noor 12 12.04.13 19:35 Сейчас в теме
Это и есть наиболее универсальный механизм. Я настраиваю выборку данных с любого количества сайтов с передачей данных в 1С. Мне без разницы как это работает, правильно или нет. Но это позволяет мне получать именно те данные, которые мне нужны и в дальнейшем их обрабатывать и транслировать как во внутреннюю базу данных так и во внешнюю. Эта проблема возникла. когда мне нужно было получать свежие данные по тендерам и передавать исполнителю с 20 сайтов, чтобы он не лазил по ним и не тратил время и деньги.
53. Yashazz 4707 15.04.13 11:33 Сейчас в теме
(52) Вы не ответили на мой вопрос. Что вы делаете с совершенно неразличимыми, но разными по содержанию узлами?
54. cool.vlad4 2 15.04.13 11:39 Сейчас в теме
(52) универсальный механизм при любых входных данных, - это сродни искусственному интеллекту. например : я беру 100500 сайтов и убираю из них все тэги, оставляю только текст, а потом говорю получите определенные данные со всех сайтов универсальным механизмом. Ок?
55. Виктори 20.04.13 07:22 Сейчас в теме
Если можно отправьте пожалуйста программный модуль-"Разбор и загрузка данных с любого сайта", на buktoru@yandex.ru, заранее спасибо.
56. Yashazz 4707 25.04.13 18:50 Сейчас в теме
(55) Отправил. Там несколько другая версия, более доработанная. Вот найду время, доведу до ума, выложу её сюды.
57. noor 12 25.04.13 19:02 Сейчас в теме
Посмотреть результат моей концепции можно на http://www.tender.infopiter.ru/tenders.html?keywords=&bdt=&edt=
Сбор информации на 20 площадках идет за 5 минут.
Можно подключить загрузку графики и прочей фигни. Но это будут следующие проекты по агрегации
данных. Так как я планирую зарабатывать на таких проектах деньги, то алгоритмы и иные технологические
фишки не открою. Ранее я указал. что основным качеством разбора является определение координат данных.
58. Yashazz 4707 26.04.13 18:09 Сейчас в теме
(57) Результат - это, конечно, супер. Но вы мне на вопрос вторично не ответили - значит, или не знаете, или изобрели ИИ и теперь разумно желаете продать его задорого. Правда, мне вот в принципе неясно, что можно сделать при двух совершенно одинаковых ветвях DOM-дерева, кроме как тупо привязываться к порядку их следования и уже исходя из этого черпать данные. Других "координат данных" в DOM в принципе нет.
И, пожалуйста, спокойнее, а то у меня возникает нехорошее ощущение, что эта моя бесплатная фиговинка вас волнует как серьёзный конкурент )))
59. noor 12 26.04.13 18:26 Сейчас в теме
Отвечаю, в двух одинаковых узлах могут быть разные классы, разные родители родителей, разный первый и последний дочерний элемент, покопайте в DOM еще, там много чего интересного есть. А конкуренции я не боюсь, потому что у меня все разработки для домашнего применения. Результаты получаемы при помощи разработок для коммерции.
61. Yashazz 4707 26.04.13 18:42 Сейчас в теме
(59) А вот когда и родитель один, и имён классов нет, и дочерних нет (сами они концевые), тогда что? Или мне конкретный пример привести?
60. Yashazz 4707 26.04.13 18:41 Сейчас в теме
Кстати, посмотрел я на всё своё творчество... и думаю замутить вообще другую версию, где а) парсинг DOM средствами 1С, б) настройки в виде адекватного xml, а не как сейчас, в) сохранение промежуточного дерева в xml же. Ну и скорость повыше будет.
62. Yashazz 4707 28.04.13 12:45 Сейчас в теме
Выложил обновлённую версию. Всерьёз думаю над кардинальной переработкой.
63. noor 12 28.04.13 13:32 Сейчас в теме
Реально задача достаточно сложная. Особенно если нужно обходить защиту от парсинга, которую любят ставить тупоголовые айтишники госструктур. Но как говориться на любую хитрую ж.... всегда найдется болт с резьбой.
64. ProIT 30.04.13 07:27 Сейчас в теме
Как побороть эту ошибку

{Форма.ОсновнаяФорма.Форма(393,16)}: Переменная не определена (СКДиПостроители)
мСКДСтруктуры=<<?>>СКДиПостроители.СоздатьСКД(тСтруктурыДляПоиска);
{Форма.ОсновнаяФорма.Форма(448,7)}: Переменная не определена (СКДиПостроители)
трез=<<?>>СКДиПостроители.ПоместитьРезультатСКДвТаблицуЗначений(мСКДСтруктуры,фп.КомпоновщикСКД,тСтруктурыДляПоиска);
65. Yashazz 4707 02.05.13 20:53 Сейчас в теме
(64) Скачать текущую версию. Это у вас, видимо, одна из первых. Или, хотите, вышлю почтой.
66. Muhin555 24 06.05.13 16:12 Сейчас в теме
(65) ошибка указанная в (64) возникает как-раз после обновления файла для скачивания
71. Yashazz 4707 16.05.13 13:54 Сейчас в теме
(66) (68) (69) Перезалил ещё раз. Странное дело, эта бага была убрана ещё полгода назад...
67. ProIT 13.05.13 18:29 Сейчас в теме
Вышлите пожалуйста, так как скачивал 30 апреля. Proit@mail.ru
68. Matis 3 13.05.13 19:07 Сейчас в теме
{Форма.ОсновнаяФорма.Форма(393,16)}: Переменная не определена (СКДиПостроители)
	мСКДСтруктуры=<<?>>СКДиПостроители.СоздатьСКД(тСтруктурыДляПоиска);
{Форма.ОсновнаяФорма.Форма(448,7)}: Переменная не определена (СКДиПостроители)
	трез=<<?>>СКДиПостроители.ПоместитьРезультатСКДвТаблицуЗначений(мСКДСтруктуры,фп.КомпоновщикСКД,тСтруктурыДляПоиска);



Никак не хочет... 8.2.17.169\УТ10.3.21.2
UPD: Файл скачал сегодня.
69. smir 52 13.05.13 19:12 Сейчас в теме
та же самая проблема...
70. Matis 3 13.05.13 20:01 Сейчас в теме
В итоге загуглил название имя файла и нашёл где-то на просторах инета работающий парсер... Уже ноги с руками переломал)))
72. Aleskey_K 31 21.05.13 11:04 Сейчас в теме
Попробую на паре сайтов. Задачи по парсингу всегда актуальны.
77. Muhin555 24 07.01.15 23:55 Сейчас в теме
Какая актуальная версия обработки?
:( А то как-то разбрасываться $$долларом как-то не хочется за примеры настроек для обработки или скачать для того чтоб узнать версию......
78. Yashazz 4707 08.01.15 12:28 Сейчас в теме
(77) Актуальная уже давно под УФ и на эту не похожа ни капли. Всё надеюсь её довинтить и выложить, хотя уже и аналоги от других авторов появились. Если очень горит, могу выслать текущий "полуфабрикат".
79. rebellium 15.01.15 12:36 Сейчас в теме
1С 8.3.5.1098 + УТ 11.1.7.54
Не открывается обработка. Разворачивается пустая область.
Версия не подходит, в свежем варианте будет поддержка? =) Оч надо
80. Yashazz 4707 18.01.15 23:03 Сейчас в теме
(79) Буквально на неделе выложу новую версию под УФ, здесь кину ссылку. Там всё будет иначе)
81. rebellium 19.01.15 10:46 Сейчас в теме
(80) Отличные новости! Жду с нетерпением ;-)
84. пользователь 18.03.16 17:22
Сообщение было скрыто модератором.
...
83. 12345mm 19.01.16 22:28 Сейчас в теме
Добрый вечер! На этой конфигурации УТ будет работать? А пробную версию можно получить st-bt@tut.by?
Прикрепленные файлы:
85. gluker 15 24.07.16 09:01 Сейчас в теме
при открытии некоторых сайтов вылетает ошибка выполнения скрипта.
тут http://infostart.ru/public/174856/ можно попробовать избавиться от этого, подключив библиотеку excanvas.js , думаю поможет удалить показ ошибок скриптов
Оставьте свое сообщение