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

22.10.13

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

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

Что позволяет обработка: 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).

См. также

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

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер).

22440 руб.

19.12.2023    6273    41    11    

37

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

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 3.0. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер). Интегрировано в Чек ККМ, Рабочее место кассира (РМК)

24000 руб.

02.11.2024    831    4    0    

4

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18654    20    22    

18

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

Склад Вашего магазина онлайн в Telegram. С картинками, ценами, описанием и характеристиками. Используйте Telegram как торговую площадку и увеличивайте продажи.

54000 руб.

10.09.2024    1075    2    4    

3

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

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20813    13    19    

18

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

Программа позволяет одним кликом настроить сбор цен ваших конкурентов или дилеров в интернете. Автоматически собирает данные результата поиска Яндекса (вам не придется вручную добавлять каждый сайт, за которым нужно следить). Обновление цен происходит по заданному вами расписанию автоматически. Можете легко отслеживать позиции вашего сайта в Яндексе по ключевым словам и фразам. Этот инструмент даст вам лучшее понимание того, как ваша SEO-стратегия влияет на видимость вашего сайта в поисковой выдаче, и поможет вам улучшить контент и структуру сайта для повышения его позиций. Функция доступна во всех тарифах.

19950 руб.

23.09.2019    31348    8    12    

31
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. WaterSmith 356 24.12.12 17:46 Сейчас в теме
Как-то не универсально.
{Форма.ОсновнаяФорма.Форма(393,16)}: Переменная не определена (СКДиПостроители)
	мСКДСтруктуры=<<?>>СКДиПостроители.СоздатьСКД(тСтруктурыДляПоиска);
{Форма.ОсновнаяФорма.Форма(448,7)}: Переменная не определена (СКДиПостроители)
	трез=<<?>>СКДиПостроители.ПоместитьРезультатСКДвТаблицуЗначений(мСКДСтруктуры,фп.КомпоновщикСКД,тСтруктурыДляПоиска);
user712426; +1 Ответить
2. Yashazz 4806 24.12.12 17:48 Сейчас в теме
(1) Ох ты ж блин, не ту версию выложил. Ща, поправлю, спасибо!
3. Yashazz 4806 24.12.12 18:36 Сейчас в теме
(1) Залил правильный файл. Ещё раз спасибо.
Кстати, у обработки есть довольно подробная встроенная справка по F1. Надеюсь, написано удобоваримо.
4. tolyan_ekb 80 24.12.12 20:47 Сейчас в теме
Парсятся только сайты без авторизации?
5. Yashazz 4806 24.12.12 21:13 Сейчас в теме
(4) По идее да, но если авторизация успешно пройдена и браузер физически отображает страницу, то, насколько знаю, объектная модель доступна. Вот скачивание по ссылкам (например, картинок) может не получиться, т.к. GET-запрос у меня безо всякой авторизации.
6. lushka 6 25.12.12 06:16 Сейчас в теме
А будет ли она грузить с "закрытого" раздела сайта, необходимо "подпихнуть" сайту сертификат и вылить инфу.
7. DrAku1a 1751 25.12.12 09:37 Сейчас в теме
Если не требуется детальный парсинг, а нужно получить одно-два-три значения из большого HTML, то проще использовать следующую функцию (пример в комментарии):
// Весьма полезная функция для парсинга, например текста HTML.
// например, есть в тексте кусок "Progress: 50%"
// Выполним код:
//   СловоМежду(ИсходныйТекстHTML, "Progress", ":", "%");
//   Сообщить("Прогресс:"+ТекПрогресс+" %");
// В результате получим сообщение: Прогресс: 50%
//
Функция СловоМежду(знач Текст, Слово1, КавычкаСлева="""", КавычкаСправа="""") Экспорт
    Перем п;
    п=Найти(врег(Текст), врег(Слово1));
    Если п<1 Тогда
        Возврат "";
    КонецЕсли;
    Текст = Сред(Текст, п+СтрДлина(Слово1));
    п=Найти(врег(Текст), врег(КавычкаСлева));
    Если п<1 Тогда
        Возврат "";
    КонецЕсли;
    Текст = Сред(Текст, п+СтрДлина(КавычкаСлева));
    п=Найти(врег(Текст), врег(КавычкаСправа));
    Если п<1 Тогда
        Возврат "";
    КонецЕсли;
    Возврат Лев(Текст, п-1);
КонецФункции
Показать
8. Ibrogim 1327 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 4806 25.12.12 15:16 Сейчас в теме
(8) Делаю, как раз такой механизм листания по страницам.
(9) Поправил, перезалил. Приношу извинения за невнимательность свою.
9. powerpc 225 25.12.12 12:07 Сейчас в теме
Ошибка при создании СКД: {ВнешняяОбработка.ПолучениеДанныхИзHTML.МодульОбъекта(443)}: Метод объекта не обнаружен (ПревращениеИмениВНаименование)
10. adhocprog 1144 25.12.12 12:15 Сейчас в теме
11. spleen 65 25.12.12 13:10 Сейчас в теме
Нужен был парсер как-то, для сбора инфы и потом выгрузки ее на сайт, написал. Когда рассказал знакомым программерам, что парсер на 1С написан, долго смеялись. Но работало без отказно. Парсер работал месяц без остановки. :)) Новое применение 1С
adhocprog; +1 Ответить
12. adhocprog 1144 25.12.12 13:22 Сейчас в теме
(11) "долго смеялись" - это явно не программисты 1С.
1С 8 рулит :)
Скоро будет робот поисковик, написанный на 8-ке :)
74. noor 13 22.05.13 16:12 Сейчас в теме
(12) adhocprog, Уже есть, и ресурсов много не ест
75. adhocprog 1144 22.05.13 18:13 Сейчас в теме
76. Yashazz 4806 23.05.13 12:32 Сейчас в теме
(74) (75) Коллеги, просьба всё-таки не оффтопить. Тут - обсуждение моей разработки, а не сравнительный анализ нескольких и уж тем более не площадка для рекламы других решений. Лады?
13. Ibrogim 1327 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 363 25.12.12 13:40 Сейчас в теме
Хорошая штука. Самому иногда приходится подобным заниматься.
17. seermak 665 26.12.12 10:32 Сейчас в теме
Ошибка ОбщегоНазначения.ПревращениеИмениВНаименование = нет в стандартном модуле Общего назначения такой процедуры.....
18. Yashazz 4806 26.12.12 12:52 Сейчас в теме
(17) Вы файл когда качали? Скачайте заново, давно уж пофиксено.
19. milkers 2954 26.12.12 14:02 Сейчас в теме
Очень нужен видеофайл с примером формирования настроек!!!!
expert.1c8; +1 Ответить
20. Yashazz 4806 26.12.12 18:22 Сейчас в теме
(19) Хммм. Только после Нового Года, к сожалению. А что, справки к обработке всё же недостаточно? :(
21. zigomodo 27.12.12 12:23 Сейчас в теме
Очень кстати,спасибо.
22. sbv2005 348 27.12.12 18:18 Сейчас в теме
Отличная тема. Давно хочу занятся автопоиском в инете. Жирный плюс.
23. Irmo 29.12.12 08:06 Сейчас в теме
Автор молодец, идея обработки хорошая, мыслите в правильном направлении.

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

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

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

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

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

(24) Да, покамест обработка шарит по ссылкам только в случае картинок. Не очень понимаю, какой ещё принцип можно реализовать - ссылок разных много, разве что по расширениям определять, лазить туда или нет...
24. tolyan_ekb 80 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 4806 07.01.13 20:33 Сейчас в теме
(28) Универсален только разбор, т.к. модель html-документа везде схожа. Понятно, что с каждым сайтом придётся возиться отдельно.
30. KroVladS 35 09.01.13 16:39 Сейчас в теме
Неплохо бы было добавить видео инструкцию с примером, а то ковырял-ковырял, так до конца и не разобрался. что-то вытаскивает, что-то нет.
31. Stamper 43 10.01.13 13:27 Сейчас в теме
следующий шаг -- DDo1C атака ;)
32. Жолтокнижниг 259 10.01.13 16:32 Сейчас в теме
Хм, идея конечно хорошая, универсальный механизм, но не люблю я DOM - медленный, не все данные отображет, я больше за регулярки.
33. VasMart 11.01.13 09:26 Сейчас в теме
34. noor 13 18.01.13 13:55 Сейчас в теме
А вот мне интересно, ты получаешь вознаграждения за то, что твою разработку скачивают именно с этого сайта. Ведь с меня за скачивание попросили 800 руб. И я не один такой. Если бы этой разработки не было бы, то и сайт этот мне не нужен был. Обрати внимание на Соглашение, если там нет передачи прав на платное распространение твоего интеллектуального труда, то можем засудить их по Закону об авторских правах. От 10000 до 5000000 руб возмещение.
35. Yashazz 4806 21.01.13 16:23 Сейчас в теме
(34) Во-первых, я ничего не получаю. Плюсы мне, в общем-то, пофигу (принцип, по которому их на ИС раздают, мне по сей день неведом), а ещё-то что? Во-вторых, несколько вышеотписавшихся попросили у меня прислать им на почту, и я прислал. В третьих, мне глубоко безразлично, что там есть в Соглашении и чего нет. В четвёртых, скоро планирую выкладывать обновление, более продвинутую версию.

Если бы я собирался "наварить" на публикации, то размещал бы в "магазине", поэтому ваш комментарий, уж извините, не по адресу.
starik-2005; expert.1c8; +2 Ответить
36. noor 13 21.01.13 16:36 Сейчас в теме
Если быть честным, то для нормального парсинга страниц эта обработка не подходит. Нет четко заданных координат данных, которые нужно получать. Так пионэрская разработка. Серьезный парсинг нужен для серьезной агрегации данных и последующей конверсии данных в денежный эквивалент.
37. Yashazz 4806 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 14 30.01.13 10:41 Сейчас в теме
Большая просьба поделиться Вашей обработкой по адресу wrkr2 @rambler.ru .
42. Yashazz 4806 30.01.13 11:06 Сейчас в теме
Уважаемые коллеги, опубликована новая версия, делать какие-то инструкции к старой не буду, а вот к новой попробую успеть, хотя занят преизрядно.
Новая версия умеет "идти глубже". По ссылке, упомянутой на одной странице, умеет читать другую страницу. Жду отзывов и замечаний, т.к. подозреваю, что где-то мог и накосячить.
43. krein 63 31.01.13 22:57 Сейчас в теме
(42) прочитал "UPD 2", что внесены изменения, есть вопрос,
файл HTMLParsLoad.epf остался такой же и с тем же названием, он обновлен уже или нет?

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

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

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

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

{Форма.ОсновнаяФорма.Форма(393,16)}: Переменная не определена (СКДиПостроители)
мСКДСтруктуры=<<?>>СКДиПостроители.СоздатьСКД(тСтруктурыДляПоиска);
{Форма.ОсновнаяФорма.Форма(448,7)}: Переменная не определена (СКДиПостроители)
трез=<<?>>СКДиПостроители.ПоместитьРезультатСКДвТаблицуЗначений(мСКДСтруктуры,фп.КомпоновщикСКД,тСтруктурыДляПоиска);
65. Yashazz 4806 02.05.13 20:53 Сейчас в теме
(64) Скачать текущую версию. Это у вас, видимо, одна из первых. Или, хотите, вышлю почтой.
66. Muhin555 28 06.05.13 16:12 Сейчас в теме
(65) ошибка указанная в (64) возникает как-раз после обновления файла для скачивания
71. Yashazz 4806 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 53 13.05.13 19:12 Сейчас в теме
та же самая проблема...
70. Matis 3 13.05.13 20:01 Сейчас в теме
В итоге загуглил название имя файла и нашёл где-то на просторах инета работающий парсер... Уже ноги с руками переломал)))
72. Aleskey_K 35 21.05.13 11:04 Сейчас в теме
Попробую на паре сайтов. Задачи по парсингу всегда актуальны.
77. Muhin555 28 07.01.15 23:55 Сейчас в теме
Какая актуальная версия обработки?
:( А то как-то разбрасываться $$долларом как-то не хочется за примеры настроек для обработки или скачать для того чтоб узнать версию......
78. Yashazz 4806 08.01.15 12:28 Сейчас в теме
(77) Актуальная уже давно под УФ и на эту не похожа ни капли. Всё надеюсь её довинтить и выложить, хотя уже и аналоги от других авторов появились. Если очень горит, могу выслать текущий "полуфабрикат".
79. rebellium 15.01.15 12:36 Сейчас в теме
1С 8.3.5.1098 + УТ 11.1.7.54
Не открывается обработка. Разворачивается пустая область.
Версия не подходит, в свежем варианте будет поддержка? =) Оч надо
80. Yashazz 4806 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 , думаю поможет удалить показ ошибок скриптов
Оставьте свое сообщение