0. starik-2005 1923 01.04.19 15:30 Сейчас в теме

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

На всякую хитрую гайку всегда найдется болт с резьбой (с)

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. bonv 847 01.04.19 15:53 Сейчас в теме
(0)
1. Редирект. По указанной в Урл странице находится страница с перманентным редиректом. Взять из нее адрес не составит никакого труда. а определить ее можно по 301-й ошибке в ответе веб-сервера.

Используйте
https://infostart.ru/public/709325/
и не будет проблем с редиректами
starik-2005; +1 1 Ответить
2. webester 28 02.04.19 12:33 Сейчас в теме
(1)Мне нравится простой пример с ИТС https://its.1c.ru/db/metod8dev#content:5574:hdoc обрабатывает перенаправления указывает на типы ошибок
3. bonv 847 02.04.19 12:43 Сейчас в теме
(2) все хорошо, пока не захочется парсить сайты, требующие предварительной авторизации
4. webester 28 02.04.19 12:52 Сейчас в теме
(3)Это на тему перенаправления. Использовать только ради него Коннектор, как из пушки по воробьям. Библиотека сама по себе отличная.
6. Поручик 4294 02.04.19 21:19 Сейчас в теме
7. starik-2005 1923 02.04.19 22:49 Сейчас в теме
Редирект на столько прост, что я о нем даже говорить не стал - скучно! Особенно когда редирект внутри одного домена

О = С.Ролучить(З);
Если О.КодОтвета МЕЖДУ 300 и 399 Тогда
  З = Новый HTTPЗапрос(ПолучитьУрл(О));
  О = С.Получить(З);
КонецЕсли;
8. s_vidyakin 03.04.19 02:28 Сейчас в теме
лучше поднапрячься и изучить как это делается в цивилизованном мире - nodejs + axios + cheerio https://nuancesprog.ru/p/3102/ делов на полчаса ))
XPath это непонятная хрень, иногда работает иногда нет, на определенных тегах/классах/фазах Луны
testnv0; starik-2005; +2 1 Ответить
9. starik-2005 1923 03.04.19 07:20 Сейчас в теме
(8) ну это как с регулярками - у меня работает, а у пользователей компьютера не всегда, хотя у нас даже аналитики уже регулярки освоили и дату в локальном формате могут заменять на xml- дату, и всегда работает)))
for_sale; +1 Ответить
13. s_vidyakin 03.04.19 11:14 Сейчас в теме
(9) пробовал получать вложенные теги в определенном теге, указываю типа ".class1 > .class2" - НОЛЬ элементов. В консоли браузера все выбирается. Пришлось выбирать глобальным поиском по class2, но они там и в других местах были, логика усложнилась проверками. Больше с XPath не связываюсь
Возможно было бы более интересно если бы написали библиотеку на OScript типа cheerio и сделали обзор )
14. starik-2005 1923 03.04.19 11:22 Сейчас в теме
(13)
пробовал получать вложенные теги в определенном теге, указываю типа ".class1 > .class2" - НОЛЬ элементов
Если речь об 1С, то я даже уточнил в статье, что XPath в ней ограничен. Хотя //div[@class='c1']/div[class='c2']/text() - вполне рабочая конструкция даже для 1С.
10. starik-2005 1923 03.04.19 08:55 Сейчас в теме
(8) кстати, вывод автора неутешительный: "мы можем извлекать данные только из статических сайтов". Я же привел пример извлечения из динамического сайта как раз - основная хитрость тут - это разобраться с источниками данных.

Также если посмотреть на статью внимательно, то понятно становится, что ничего нового - тот же запрос к HTML-ДОМ'у, преобразованному в виртуальный ДОМ с помощью компонента node.
11. s_vidyakin 03.04.19 11:07 Сейчас в теме
(10) там есть вторая часть, для динамических сайтов - https://nuancesprog.ru/p/3125/.
Конечно тот же DOM, но удобнее, у XPath язык отличается от стандартных CSS селекторов
Да и скорость еще под вопросом у XPath, думаю он ляжет на больших объемах
testnv0; starik-2005; +2 Ответить
12. starik-2005 1923 03.04.19 11:11 Сейчас в теме
(11) так я и не спорю, что 1С для парсинга сайтов подходит весьма условно. Во второй статье очень хороший и интересный подход через кликер для динамики - реально вещь! )))
15. fr13 611 04.04.19 10:46 Сейчас в теме
Материал полезен для новичков в этой теме, но зачем же так называть переменные?
16. starik-2005 1923 04.04.19 13:32 Сейчас в теме
(15)
но зачем же так называть переменные?
Переменные названы просто отлично. Так, как в примерах для других языков программирования.
ЗЫ: Я, кстати, тоже с Вологды.
Прикрепленные файлы:
17. TODD22 17 04.04.19 13:33 Сейчас в теме
(16)Вы все переменные называете как "счётчик цикла" ?
18. starik-2005 1923 04.04.19 13:35 Сейчас в теме
(17)
Вы все переменные называете как "счётчик цикла" ?
Мы все переменные называем ровно так, чтобы было понятно, что они есть.
19. TODD22 17 04.04.19 14:11 Сейчас в теме
(18)
Да я заметил "О", "С", "З"... очень содержательные имена.
20. starik-2005 1923 04.04.19 14:18 Сейчас в теме
(19) для понимания достаточно?
21. premier 174 05.04.19 16:54 Сейчас в теме
(20) Вот имя переменной ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений вполне себе содержательное. Для понимания достаточно, даже если с места её объявления прокрутить несколько сотен строк, смысл всё равно будет понятен.
А вот смысловую нагрузку "О", "С", "З" можно понять, если текст, где происходит объявление этой переменной и где время её жизни заканчивается, находятся на одной экранной страннице. Не экономьте время на читабельности кода! Через некоторое время самому сложно будет этот код править.
22. starik-2005 1923 05.04.19 21:20 Сейчас в теме
(21) кто не умеет - тому пропроцессор компоновки как ни назови - все бессмысленно. А кто умеет - тому хоть горшком (наролная мудрость, кстати, а вряд ли мы умнее народа по-одному)
24. fr13 611 06.04.19 11:28 Сейчас в теме
(16) мы пересекались в Вологде года 4 назад. Магазин автозапчастей. Я тогда работал в своем первом франче, а Вы были как приглашенный московский спец ))
25. starik-2005 1923 06.04.19 17:19 Сейчас в теме
(24) я кстати к ним на днях заеду - чисто поглядеть. А по поводу приглашенного - это мои клиенты с 2004-го года.
26. starik-2005 1923 25.04.19 15:21 Сейчас в теме
(24) кстати, переработал и дополнил их программно-аппаратную часть - вот что получилось: https://infostart.ru/public/1051601/
27. fr13 611 26.04.19 08:47 Сейчас в теме
(26) Да, я прочитал этот материал ) сразу понял про кого речь ))
23. premier 174 06.04.19 10:27 Сейчас в теме
(0) Информация по теме: в версии платформы 8.3.13 у объекта ДокументHTML появилась функция НайтиПоФильтру(Фильтр). С её помощью можно получить требуемые узлы, выполнив следующий код:
	ЧтениеHTML = Новый ЧтениеHTML;
	ЧтениеHTML.УстановитьСтроку(ТекстHTML);
	Построитель = Новый ПостроительDOM;
	ДокументHTML = Построитель.Прочитать(ЧтениеHTML);
	ЧтениеHTML.Закрыть();
	ДокументHTML.НормализоватьДокумент();
	Фильтр = "{
			|	""type"": ""intersection"", 
			|	""value"": 
			|	[
			|		{ 
			|			""type"": ""elementname"", 
			|			""value"": 
			|			{ 
			|				""value"": ""div"",
			|				""operation"": ""equals""
			|			}, 
			|		}
			|		,
			|		{ 
			|			""type"": ""hasattribute"", 
			|			""value"": 
			|			{ 
			|				""value"": ""class"",
			|				""operation"": ""nameequals""
			|			}	 
			|		}
			|		,
			|		{ 
			|			""type"": ""hasattribute"", 
			|			""value"": 
			|			{ 
			|				""value"": ""item-info"",
			|				""operation"": ""valueequals""
			|			}	 
			|		}
			|	]
			|}";
	МассивУзлов = ДокументHTML.НайтиПоФильтру(Фильтр);
Показать


Ну а затем уже анализировать дочерние элементы. Можно с помощью XPath, а можно и без.
AlX0id; coollerinc; starik-2005; +3 Ответить
28. ture 554 17.05.19 15:15 Сейчас в теме
Jsoup, и не забивай голову ерундой
29. starik-2005 1923 17.05.19 15:36 Сейчас в теме
(28)
Jsoup
А что там у него с динамическим контентом?
30. ture 554 17.05.19 15:42 Сейчас в теме
31. starik-2005 1923 17.05.19 17:30 Сейчас в теме
32. amd1986 25.07.19 11:38 Сейчас в теме
Брр. Кто мешает использовать 1C 8.3.14 и javascript?
33. starik-2005 1923 25.07.19 12:29 Сейчас в теме
(32)
Кто мешает использовать 1C 8.3.14 и javascript?
А как JS заставить работать в регламентном задании? Мне вот реально надо (бывал как-то в Кадникове ВО в детском доме - давно это было).
34. amd1986 25.07.19 13:00 Сейчас в теме
(33) В фоновом наверно не получится(не проверял). Страница должна прогрузиться на форме, чтобы с ней можно было работать через ноды.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Москва
зарплата от 120 000 руб.
Полный день

Руководитель проекта, аналитик, консультант
Санкт-Петербург
По совместительству

Программист 1С
Самара
зарплата от 100 000 руб. до 150 000 руб.
Полный день

Бизнес-аналитик 1С
Москва
зарплата от 140 000 руб. до 200 000 руб.
Полный день