|
Не обновляется ПолеHtmlДокумента | ☑ | ||
---|---|---|---|---|
0
Dendroid92
19.02.16
✎
16:50
|
Здравствуйте! Пишу сюда для получения помощи по такому вопросу. Есть некий сайт, html которого я передаю в ПолеHtmlДокумента, далее нахожу в этом html нужные мне поля и подставляю туда значения, после чего программно нажимаю на кнопку поиска, однако глубоко было мое разочарование, когда оказалось, что html не обновился и я получается парсил старое html, а не обновленное. Вот сам вопрос: Как в ПолеHtmlДокумента нажать на кнопку и получить новую html в ответ на нажатие кнопки, чтобы парсить дальше обновленную html?
|
|||
1
sash-ml
19.02.16
✎
17:09
|
событие ПриНажатии сделай или ПриИзменении
в нем как-то так. сс = Элементы.ПолеНТМЛ.Document.getElementById("fooId").value |
|||
2
Юрий Лазаренко
19.02.16
✎
17:10
|
Элементы.ПолеНТМЛ.Document.getElementById("fooId").click()
|
|||
3
Dendroid92
19.02.16
✎
17:18
|
(2) я так и сделал, но html обновляется только после окончания выполнения процедуры
|
|||
4
Dendroid92
19.02.16
✎
17:21
|
(2) а мне нужно, чтобы после Элементы.ПолеНТМЛ.Document.getElementById("fooId").click() я получил обновленное html и дальше парсил ее в этой же процедуре
|
|||
5
Asmody
19.02.16
✎
17:26
|
Возможны два варианта:
1) при нажатии на кнопку срабатывает обычный submit формы. В этом случае логичнее посмотреть action и method формы и отправлять запрос через ОтправитьДляОбработки 2) используется ajax. В этом случае на кнопку или форму повешено событие, в обработчике которого реализована логика обмена с сервером. Надо читать исходник на javascript и пытаться повторить логику запроса. |
|||
6
sash-ml
19.02.16
✎
17:33
|
(4) парсить НТМЛ дело неблагодарное
текст Элемента не обязательно обновится. получать данные из поля ПолеНТМЛ лучше по ДОМ структуре +(5) после клика, если там ajax, то тебе нужно запилить обработчик ПриИзменении, и в нем обходить ДОМ объект. по другому никак. |
|||
7
Dendroid92
19.02.16
✎
17:49
|
(5) (6) Вот сайт http://elibrary.ru/authors.asp, в нем мне нужно проставить либо SPIN-code (если есть на форме в 1С), либо же вводить Фамилию и Организацию. Посмотрел JavaScript, там получается обычный submit (вариант 1). action = "authors.asp"
method = "post" как теперь нужно написать ОтправитьДляОбработки (первый раз сталкиваюсь, поэтому сильно не ругайте) |
|||
8
sash-ml
19.02.16
✎
18:56
|
заголовки такие
POST http://elibrary.ru/authors.asp HTTP/1.1 Referer http://elibrary.ru/authors.asp Host elibrary.ru строка запроса authors_all=&pagenum=&authorbox_name=&selid=&orgid=&orgadminid=&surname=&codetype=SPIN&codevalue=1234567890&town=&countryid=&orgname=&rubriccode=&sortorder=0&order=0 |
|||
9
Dendroid92
20.02.16
✎
00:15
|
(8) Написал такой код:
<pre> Сервер = "http://elibrary.ru"; Ресурс = "/authors.asp"; HTTP = Новый HTTPСоединение(Сервер); ФайлЗапроса = ПолучитьИмяВременногоФайла(); ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.УстановитьТекст("authors_all=&pagenum=&authorbox_name=&selid=&orgid=&orgadminid=&surname=Мезенова&codetype=SPIN&codevalue=&town=&countryid=&orgname=&rubriccode=&sortorder=0&order=0"); ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8); ФайлРезультата = ПолучитьИмяВременногоФайла(); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить(); HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP); Ответ = Новый ТекстовыйДокумент(); Ответ.Прочитать(ФайлРезультата, КодировкаТекста.UTF8); ТекстОтвета = Ответ.ПолучитьТекст(); УдалитьФайлы(ФайлЗапроса); УдалитьФайлы(ФайлРезультата); </pre> Из Вашего сообщения не понятно как нужно вставить заголовки. И если требуется передать параметр surname, то надо писать параметр в '' или ""? |
|||
10
Dendroid92
20.02.16
✎
12:30
|
(8) Прошлый вариант выдавал ошибку, покапался, вроде исправил на такой код:
<pre> Сервер = "elibrary.ru";; Ресурс = "/authors.asp"; HTTP = Новый HTTPСоединение(Сервер); ФайлЗапроса = ПолучитьИмяВременногоФайла(); ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.УстановитьТекст("&authors_all=&pagenum=&authorbox_name=&selid=&orgid=&orgadminid=&surname=&codetype=SPIN&codevalue=&town=&countryid=&orgname=&rubriccode=&sortorder=0&order=0"); ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8); ФайлРезультата = ПолучитьИмяВременногоФайла(); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("POST", "elibrary.ru/authors.asp"); ЗаголовокHTTP.Вставить("Referer", "elibrary.ru/authors.asp"); ЗаголовокHTTP.Вставить("Host", "elibrary.ru/authors.asp"); HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP); Ответ = Новый ТекстовыйДокумент(); Ответ.Прочитать(ФайлРезультата, КодировкаТекста.UTF8); ТекстОтвета = Ответ.ПолучитьТекст(); УдалитьФайлы(ФайлЗапроса); УдалитьФайлы(ФайлРезультата); </pre> Пришел ответ: <pre> <head> <title>Object moved</title> </head> <body> <h1>Object Moved</h1> This object may be found <a HREF="/start_session.asp?rpage=http%3A%2F%2Felibrary%2Eru%2Fauthors%2Easp">here</a>. </body> </pre> По идее же должен был вернуться список авторов? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |