|
Парсинг сайта... ПолучитьЭлементПоИдентификатору - как заставить его работать? | ☑ | ||
---|---|---|---|---|
0
artist
30.07.14
✎
21:52
|
Почему-то метод ПолучитьЭлементПоИдентификатору не хочет возвращать нужный элемент DOM...
Вот примерный код: СтрокаХ = "<div id='J_OrderList'></div>"; ЧтениеHTML = Новый ЧтениеHTML; ЧтениеHTML.УстановитьСтроку(СтрокаХ); ПостроительDOM = Новый ПостроительDOM; ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML); ОсновнаяТаблица = ДокументHTML.ПолучитьЭлементПоИдентификатору("J_OrderList"); после этого ОсновнаяТаблица = Неопределено, хотя ДокументHTML.ПолучитьЭлементыПоИмени("div")[0].Идентификатор = "J_OrderList" Что я не так делаю? Почему ПолучитьЭлементПоИдентификатору не находит нужный элемент? |
|||
1
artist
30.07.14
✎
22:13
|
Ап. Неужели никто ничего не парсит?
|
|||
2
artist
30.07.14
✎
22:28
|
Видимо лучше использовать ЭлементыФормы.Сайт.Документ.getElementById("J_OrderList")
Оно хоть как-то работает... |
|||
3
trad
31.07.14
✎
00:10
|
У меня есть пара разработок связанных с парсингом.
В одной тоже действую через Документ.getElementById, насколько помню тоже не разобрался с ПолучитьЭлементПоИдентификатору А в другой все построено на получение узлов с помощью ВычислитьВыражениеXPath. Правда здесь пришлось html сайтов причесывать в xml с помощью tidy |
|||
4
artist
31.07.14
✎
09:03
|
Мне кажется многовато танцев с бубнами с XPath для простого парсинга... Впринципе, сделал уже большую часть из того что надо, с помощью DOM-модели... Даже работает :)
|
|||
5
Serginio1
31.07.14
✎
12:02
|
Можешь воспользоваться нетовскими библиотеками
http://habrahabr.ru/post/112325/ v8: v8: Использование сборок .NET в 1С 7.x и 8.x http://files.rsdn.ru/19608/FilesForNetObjectToIDispatch.zip |
|||
6
artist
02.08.14
✎
11:58
|
(5)Благодарю, но мне кажется это слишком жирно ещё и ВКшки использовать... Вроде приноровился к DOM, более-менее быстро работает, и более-менее стабильно.
А как-нибудь программно можно обновить страницу, отображаемую в ПолеHTMLДокумента на форме? Метода Обновить у ПолеHTMLДокумента нету, у ком-объекта Поле.Документ - тоже в описании ничего нужного не нашёл. Пробовал так: ЭлементыФормы.Сайт.Перейти(НужнаяСтраница); вообще ничего не происходит... видимо 1Сина анализирует текущую страниу, и если подаётся команда на переход на ту же страницу - приказ игнорируется... Ещё так: ЭлементыФормы.Сайт.Перейти(""); ЭлементыФормы.Сайт.Перейти(НужнаяСтраница); Работает через раз... логику понять так и не удалось... |
|||
7
Diman000
02.08.14
✎
11:59
|
Не буду оригинален, я тоже через getElementById делал
|
|||
8
artist
02.08.14
✎
12:21
|
Жалко что нельзя использовать селекторы а-ля CSS/JQuery, цены бы ему не было... Ведь зачастую у нужных элементов нет айдишника, но есть класс, есть вышестоящие элементы и т.д.
А что по поводу обновления поляHTML? Никто не делал? |
|||
9
artist
02.08.14
✎
13:44
|
Апну.
Как обновить страницу в ПолеHTMLДокумента? |
|||
10
artist
02.08.14
✎
22:28
|
Ещё разок Ап - кто знает, как обновить страницу?
|
|||
11
Diman000
02.08.14
✎
23:50
|
Я как-то обновлял, сейчас не вспомню уже. А разве у объекта IE нет такой команды?
|
|||
12
Diman000
02.08.14
✎
23:50
|
А, тебе в ПолеHTMLДокумента, я все через браузер делал...
|
|||
13
kokamoonga
03.08.14
✎
06:54
|
(8) >>> Жалко что нельзя использовать селекторы а-ля CSS/JQuery, цены бы ему не было...
Мешают религиозные соображения или тебе просто кто-то запретил? Процедура ПриОткрытии() ЭлементыФормы.ПолеHTMLДокумента1.Перейти("http://www.forum.mista.ru/index.php"); КонецПроцедуры Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка) document = ЭлементыФормы.ПолеHTMLДокумента1.Документ; document.parentWindow.eval("document.get_jQuery = function (selector) { return $(selector); }"); document.get_jQuery("#keywords").val("Done!"); КонецПроцедуры Процедура ОсновныеДействияФормыОбновитьСтраницу(Кнопка) // >>> А что по поводу обновления поляHTML? Никто не делал? ЭлементыФормы.ПолеHTMLДокумента1.Документ.location.reload(); КонецПроцедуры |
|||
14
kokamoonga
03.08.14
✎
06:57
|
(13) + парсер как всегда пожевал ссылку
|
|||
15
artist
03.08.14
✎
10:59
|
(13)1. Я правильно понимаю, что на странице уже должен быть загружен jquery.js? И если сайт его не использует - ничего не получится?
2. За обновление благодарю, должно получиться! |
|||
16
artist
03.08.14
✎
11:12
|
Да, точно, с обновлением получилось
|
|||
17
kokamoonga
03.08.14
✎
13:44
|
(15) >>> Я правильно понимаю, что на странице уже должен быть загружен jquery.js?
Ну если просто тупо копировать код, то понимаешь совершенно правильно. А если немного подумать, то можно сделать так, например. Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка) document = ЭлементыФормы.ПолеHTMLДокумента1.Документ; eval_text = " | var sc = document.createElement(""script""); | sc.src = ""http://yandex.st/jquery/1.8.2/jquery.min.js""; | document.body.appendChild(sc); | document.get_jQuery = function (selector) { return $(selector); }"; document.parentWindow.eval(eval_text); document.get_jQuery("#keywords").val("Done!"); КонецПроцедуры |
|||
18
artist
03.08.14
✎
14:10
|
(17)Спасибо, надо попробовать.
Неужели действительно подгрузит библиотеку... |
|||
19
kokamoonga
03.08.14
✎
14:25
|
(18) самому не верится...
|
|||
20
Serginio1
04.08.14
✎
14:04
|
(6) Кстати это не ВК. Обычный COM который может выполняться как в 32х так и 64х разрядных процессах
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |