Если вы когда-нибудь писали парсер html под 1c, то прекрасно знакомы с кучей багов ПолеHTMLДокумента, которые он наследует от WebBrowser — например событие ДокументСформирован некорректо отрабатывает AJAX, DOM модель работает от случая к случаю на разных машинах и т.д.
Моя библиотека не панацея, но позволила решить все насущные проблемы. Можете говорить о недостатке функционала, но 3х функций вполне достаточно для парсинга каталогов десятков интернет-магазинов, загрузок заказов из личного кабинета и т.д.
Итак, по порядку.
Для начала, нужно зарегистрировать библиотеку
regsvr32 altbrowser.dll
Инициализация компоненты:
Попытка
браузер = новый COMОбъект(«AltBrowser.Browser»);
Исключение
Предупреждение(«Не удалось загрузить внешнюю компоненту!»,,»Ошибка создания»);
Состояние(«»);
Возврат;
КонецПопытки;
Браузер.CreateView();
По сути, CreateView() это создание вкладки в браузере. Создание нескольких вкладок не реализовано, не было потребности.
Обязательно надо закрыть ее, когда она не нужна.
Браузер.DestroyView();
Перейти на страницу
Результат=Браузер.Navigate(url);
Переходит на указанный url, выполняется синхронно, возвращает строку outerHTML. В отличии от ПолеXTMLДокумента возвращает значение после полной загрузки документа, корректно отрабатывает AJAX. Асинхронная загрузка не реализована.
Результат=Браузер.outerHTML();
Тут все просто, возвращает outerHTML документа
Браузер.ExecuteJS(ТекстСкрипта);
Выполняет javascript, опять же синхронно. Результат можно посмотреть с помощью outerHTML. выполнение скриптов с возвратом результата не стал реализовывать, т.к. за 2 года работы потребности в этом не было.
В качестве примера авторизация на сайте emex.ru
Браузер.Navigate(«http://emex.ru/»);
браузер.ExecuteJS(«var elems = document.getElementsByTagName(‘input’);
|for(var i=0; i | if (elems[i].name==’username’){
| elems[i].value='»+ЛогинEmex+»‘;
| }};»);
браузер.ExecuteJS(«var elems = document.getElementsByTagName(‘input’);
|for(var i=0; i | if (elems[i].name==’password’){
| elems[i].value='»+ПарольEmex+»‘;
| }};»);
браузер.ExecuteJS(«var elems = document.getElementsByTagName(‘form’);
|for(var i=0; i | var str=elems[i].action;
| if (str.indexOf(‘Account.mvc’)+1){
| elems[i].submit();
| }};»);
Приветствую коллегу по железу (правда я по силовому троеборью в экипировке- IPF).
http://infostart.ru/public/149468/ парсер сайта? Я понимаю, что вы и так попытались донести свою мысль , но к сожалею большинство не понимают как это можно реализовать (ну или только я) ), как ни стараются)
Вы не думали над тем что бы сделать на основе
(1) nsm, У меня как раз таки обработка собирает данные о кроссах и ценах с 12 сайтов, включая Exist, и выводит в сводную таблицу, либо тащит с любого из сайта список кросс-номеров к детали и в подборе делает отбор по кроссам
(1) nsm,http://www.youtube.com/watch?v=NMK_-knQb0A вот собственно так работала старая версия без проценки, только в режиме подбора кроссов
Как я понимаю, компонента по технологии COM, а не NativeAPI
(4) theshadowco, все верно. я в С++ особо не разбираюсь, сделал чтобы работало и то хорошо
Метод объекта не обнаружен (Destroy)
Можно кусок кода?
(7) Код как-бы из примера в статье:
Показать
Мой фэйл, в новой версии библиотеки метод называетcя DestroyView()
(9) а где взять новую версию библиотеки? Инфостарт показывает, что дата файла = 01.06.14.
(10) Скачала еще раз библиотеку, переустановила, DestroyView() теперь работает. Спасибо.
Но так и не получилось воспользоваться ExecuteJS(). =(
Открываю страницу со следующим кодом:
Показать
Пытаюсь сделать
— ничего не происходит..
Пример авторизация на сайте emex из статьи — тоже не рабочий.
enturion74, не могли бы Вы привести хоть один живой пример использования скриптов?
А где вы взяли такую страницу? если генерируете страничку, то сервер не примет ее, с большой долей вероятности, ибо источник неведомо где расположен.
Если уж говорить об экзисте, то вот рабочий кусок кода, который я продал очередной раз не далее как сегодня:
Еще ньюанс, куки сохраняются по умолчанию в рабочую папку программы, как правило это «C:Program Files (x86)1cv82common» или «C:Program Files1cv82common», возможно, что UAC не дает записывать туда, либо нет прав на запись
Я как понял базовая система — это «альтернативный браузер» (с возможностью работы без форм)?
(14) EmpireSer, да, хотя в SDK awesomium в принципе есть функционал для отображения окна
(15)
Это я заметил.
Я ещё заметил, что она кросс-платформенная. Может Вам лучше вместо СОМ сделать Native компоненту? Заодно сможете сделать тоже кросс-платформенную внешнюю компоненту для 1С.
время будет может займусь, хотя потребности нет вроде такой
(13) а указать другой путь для сохранения куки нельзя ?
Добрый день!
Я видел вашу разработку для Гугл Хрома. Мне нужно не грабить страницу, а распечатать её в файл PDF по правилам Гугл Хром. То есть то, что делается с помощью стандартного меню Печать-Сохранить как PDF меня вполне устроит. Нужен ещё один метод к уже загруженной странице. PrintPDF(<path-file>)
Сколько может стоить такая доработка у Вас и в какой срок?
А на 7.7 она будет работать?
(20) dikd, теоретически должно
(19) Гость, посмотрю на выходных
Вот такая ошибка при регистрации dll’ки
Win 7 Prof 32 bit, Пробовал закидывать в System32 и в C:\r
регить как regsvr32 altbrowser.dll
regsvr32 C:altbrowser.dll
centurion74, свяжитесь, пожалуйста, со мной по поводу возмездного сотрудничества 9629095 собака gmail точка com как можно скорее))
(22) Жаль, что моё предложение оказалось неинтересным. Думал, что смогу приобрести у вас уже готовый продукт.
(26) nsm, я отписал на почту вроде
(27) точно нет) напишите ещё раз, пожалуйста. 9629095@gmail com
(9) подскажи, а как дела обстоят с куками? Есть один сайт, который не дает залогинится, ругаясь на то, что «В вашем браузере отключены cookies».
(29) keln, да работают, один момент-они сохраняются в рабочую папку программы, как правило, куда указывает путь рабочей папке в ярлыке, там должны быть разрешения на запись
Вот такая ошибка при регистрации —http://savepic.net/6704820.htm
Windows 7 — 64
Можете подсказать что не так?
Спасибо! Пригодился!
В клиент-серверной базе не работает
Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован
(31) r2d255,
dependencywalker . Запускаете исполняемый файл, подсовываете ему библиотеку и смотрите, на что ругается. В первую очередь подкиньте в тот же каталог altbrowser.dll те библиотеки, которые без значка песочных часов.
Всем у кого не регается altbrowser.
Вероятнее всего проблема в файлах:
msvcp120.dll
msvcr120.dll
Так же убедитесь, что вы не забыли распаковать Awesomium в каталог altbrowser.dll
Выяснить, чего реально не хватает можно софтиной
Спасибо за обработку! Попробую поковырять. Долгие танцы с бубном по нахождению элементов и судя потому что после нажатия кнопки в результате та же страница то я делаю что то не так)))
пример кода на сайте:
<input name=»username» class=»logininput» type=»text»>
<input name=»password» class=»logininput» type=»password»>
<input name=»remember_me» value=»true» selected=»» class=»absmiddle» type=»checkbox»>
<input id=»loginsubmit» class=»loginsubmit» src=»assets/images/button_login.png» value=»Login» alt=»Login» onclick=»javascript:document.login_form.Ticket.value=gup(‘ticketID’); document.login_form.Manufacturer.value=gup(‘manName’); document.login_form.DetailTabNumber.value=gup(‘partDetailTab’); document.login_form.PartNum.value=gup(‘partnumber’);setTimeout(diableLogin, 1);» type=»submit»>
как я обрабатываю:
Правильно делаю? но не работает =)))
Можно еще selenium и jquery использовать
http://www.vcskicks.com/selenium-jquery.php
Сайт требует TLS 1.1 и не хочет работать с TLS 1.0. Как это решить? Подскажите, кто разбирается, пожалуйста.
Transport Layer Security — Протокол защиты транспортного уровня.
В этой разработке есть возможность перейти на страницу и распечатать ее программно? Без открытия диалогов и окон. Спасибо
(38) печать не реализована, но сам движок это позволяет, можете скачать исходники и дописать по аналогии с другими методами
Добрый день,
стоит задача настроить взаимодействие между 1с и контур.фокус.
Основная проблема — авторизоваться в сервисе. Для авторизации на электронный адрес высылается одноразовая ссылка. По ней выполняется обращение к ресурсу auth.kontur.ru с уникальным ключом, после чего происходит редирект на сайт фокус.контур.
Ваша разработка позволяет выполнить программно авторизацию? И в дальнейшем возможность выполнение POST запросов к этому сеансу?
(40) авторизация по ссылке скорее всего сработает, а насчет пост-запросов-только если средствами Javascript пробовать
Возникла проблема. При загрузке страницы на одном сайте появляется «выберите ваш город» и дальше загрузке страницы не идет.
Попробовал открыть через Chrome (полная версия), выбрал город, окно больше не появлялось. Однако через компоненту проблема по-прежнему осталась.
Есть ли возможность как-то отобразить визуально окно страницы при работе с компонентой или может есть какой-нибудь другой вариант как обойти всплывающие окна препятствующие загрузке страницы?
Так и не получилось зарегистрировать dll, ошибка как в 23. 2 стратмани (последних) потрачены в пустую. Есть рекомендации как мне выполнить регистрацию?
(43) обычно помогает установкаhttps://www.microsoft.com/en-us/download/details.aspx?id=5555
(44) а можете исходники скинуть, стартмани кончились ((. Проект Awesomium теперь Ultralight называется, хочу нативную компоненту написать. Или может занимались таким?
(45) почту в личку скиньте
(46) что-то в личку не уходит сообщение infoСОБАКАbizon22.ru
а впн прикрутить есть какие-то варианты?