Дано: чужой сайт, на сайте есть скрипт, который формирует на клиенте HTML-страницу с текстом, картинками, гиперссылками - всё, как положено.
Требуется: средствами 1С 8.3 получить список гиперссылок с данного сайта. Если сохранить страницу через браузер или средствами 1С - сохраняется скрипт. Можно ли как-нибудь извратиться, например, через DOM-модель? Или 1С в данной задаче "пролетает"?
IE = Новый COMОбъект("InternetExplorer.Application");
IE.Visible = Истина;
IE.Navigate("https://site.com");
Пока IE.readyState < 4 Цикл
КонецЦикла;
Ссылки=IE.Document.links;
Для Каждого Ссылка из Ссылки Цикл
ОбработатьСсылку(Ссылка.href); // а там опять IE.Navigate(Строка), если нужно
КонецЦикла;
(10) Реквизит с типом Строка вынесите на форму. У реквизита формы укажите вид Поле HTML документа. Реквизиту присвойте значение полученной HTML вёрстки.
Я сделал по-рабоче-крестьянски: присвоил строку со скриптом реквизиту. Хорошая новость - скрипт работает, плохая - выдаёт кучу ошибок в js, затем пишет "Oops! Please reload this page.", то есть ему что-то не нравится.
(20) И да, и нет. Её ПЫТАЕТСЯ отобразить скрипт, но у него что-то не получается. Если ты не ханжа - могу скинуть URL в личку. Будет челлендж - 1С-ник против Web-мастеров (или кто они там). :)))
(24) Да, там валятся ошибки потому что страница пытается подключить скрипты по неполным ссылкам, подразумевающим что они лежат в корне хостинга. Т.к. у вас этих скриптов в папке с 1С нет, появляются ошибки. При дополнении ссылок на скрипты адресом сайта, проблема не решается т.к. основной скрипт, заполняющий страницу, сделан максимально нечитабельным (даже beautifier не помог) и у меня есть такое подозрение, что его изначально писали чтобы усложнить парсинг. Это задача точно не для 1С. Если очень нужно, попробуйте php. Если принципиально важно через 1С, есть только один вариант: открыть страницу в браузере, пкм-просмотреть код, пкм по второй строке и выбрать пункт edit as html. Затем ctrl+a, ctrl+c, ctrl+v в каком-нибудь текстовом поле 1С и уже затем можно парсить. Основной контент лежит в блоке с классом thumbs.
основной скрипт, заполняющий страницу, сделан максимально нечитабельным (даже beautifier не помог) и у меня есть такое подозрение, что его изначально писали чтобы усложнить парсинг
Так и есть.
открыть страницу в браузере, пкм-просмотреть код
Так вместо кода скрипт будет :(((( Если только в стилях ковыряться.
(15) Это покажет файлы, которые грузит скрипт. По какому алгоритму он их грузит - навскидку неясно. Скорее всего, как-то взаимодействует с БД на сервере, поскольку скрипт на всех страницах один, а результат - разный. Поэтому я и хочу выполнять скрипт у себя, чтобы он думал, что он в браузере.
(18)грубо говоря есть таблица с файлами, скрипт генерит обращение через процедуру к этому файлу, это очевидно. По какому алгоритму он грузит надо смотреть уже сам скрипт, что он вызывает, скорее всего у Вас такой финт не пройдет, т.к. неизвестны идентификаторы файлов, которые передает сценарий. В строке ведь наверняка такая строка script?id=777
Найдена половина решения в стиле Жванецкого-Задорнова. Поскольку для каждой гиперссылки есть preview и имя *.jpg в preview совпадает с адресом ссылки, то просто:
1. Пускаем сайт через Апач.
2. Достаём из его лога имена файлов по определённому шаблону.
3. Генерим и открываем URL'ы
Для последователей - тут есть засада: грузятся только те картинки, которые видны на экране, поэтому, чтобы получить их все, надо страницу пролистать всю.
IE = Новый COMОбъект("InternetExplorer.Application");
IE.Visible = Истина;
IE.Navigate("https://site.com");
Пока IE.readyState < 4 Цикл
КонецЦикла;
Ссылки=IE.Document.links;
Для Каждого Ссылка из Ссылки Цикл
ОбработатьСсылку(Ссылка.href); // а там опять IE.Navigate(Строка), если нужно
КонецЦикла;