|
Проблема с COMОбъект("InternetExplorer.Application") | ☑ | ||
---|---|---|---|---|
0
rotting
13.01.12
✎
16:38
|
Пытаюсь разобрать веб страницу по кускам
IE = Новый COMОбъект("InternetExplorer.Application"); IE.Visible = Истина; Страница = "http://jurportal.org/tax_base"; IE.Navigate(Страница); Пока IE.readyState < 4 Цикл ОбработкаПрерыванияПользователя(); КонецЦикла; //Тут все работает как мне надо значение IE.readyState принимает //значение 4 в момент полной загрузки страницы //Потом нажимаю кнопку на странице, и в этот момент должна //загрузиться новая страница, но переменная IE.readyState не обнуляется IE.Document.forms(0).submit(); //соответственно здесь я не знаю когда начинать парсить новую страницу Поскажите как решить проблему |
|||
1
rotting
13.01.12
✎
16:59
|
ап..
|
|||
2
rotting
13.01.12
✎
17:09
|
еще ап
|
|||
3
Torquader
14.01.12
✎
02:19
|
Попробуй XMLHttpRequest - там проще будет.
|
|||
4
rotting
16.01.12
✎
02:54
|
Да уже с этим функционалом дохера написал, может кто подскажет все таки????
|
|||
5
Ковычки
16.01.12
✎
06:59
|
Пока IE.readyState < 4 Цикл
ОбработкаПрерыванияПользователя(); КонецЦикла; |
|||
6
rotting
16.01.12
✎
13:15
|
(5) я же написал:
//Потом нажимаю кнопку на странице, и в этот момент должна //загрузиться новая страница, но переменная IE.readyState не обнуляется |
|||
7
detec
16.01.12
✎
13:47
|
(0) В аналогичных случаях я пингую localhost. Но если таки по этому таймауту документ не готов, то я возвращаю функцией ошибку.
|
|||
8
НЕА123
16.01.12
✎
14:25
|
может ОФФ.
Пока (IE.readyState < 4) И (IE.StatusText <> "Готово") Цикл ? |
|||
9
Ковычки
16.01.12
✎
15:23
|
Пока IE.Busy < 4 Цикл
ОбработкаПрерыванияПользователя(); КонецЦикла; |
|||
10
Ковычки
16.01.12
✎
15:23
|
Пока IE.Busy Цикл
ОбработкаПрерыванияПользователя(); КонецЦикла; |
|||
11
FN
16.01.12
✎
15:46
|
Пока (IE.readyState<4) или (IE.Busy=-1) Цикл
Состояние("Загрузка страницы... Попытка "+КоличествоПопыток); Пауза(1000); КонецЦикла; |
|||
12
FN
16.01.12
✎
15:50
|
(11)+ А вообще держи готовый код (только почисти):
WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"Windows-1251"); WinHttp.Open("POST","http://sta.gov.ua/control/uk/vat/search",0); WinHttp.SetRequestHeader("Accept-Language", "ru"); WinHttp.SetRequestHeader("Accept-Charset","Windows-1251"); WinHttp.setRequestHeader("Content-Language", "ru"); WinHttp.setRequestHeader("Content-Charset", "Windows-1251"); WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251"); ПостЗапрос = "isJuridical="+Число(ЮрЛицо); Если КритерийПоиска="ОКПО" Тогда ПостЗапрос=ПостЗапрос+"&individualCode="+СокрЛП(ОКПО); ИначеЕсли КритерийПоиска="ИНН" Тогда ПостЗапрос=ПостЗапрос+"&individualNumber="+СокрЛП(ИНН); ИначеЕсли КритерийПоиска="НомерСвидетельства" Тогда ПостЗапрос=ПостЗапрос+"&licenseNumber="+СокрЛП(НомерСвидетельства); Иначе ПостЗапрос=ПостЗапрос+"&name="+СокрЛП(Название); КонецЕсли; WinHttp.Send(ПостЗапрос); //отправили запрос //Разбор ответа Истина=-1; Ложь=0; RegExp = СоздатьОбъект("VBScript.RegExp"); RegExp.IgnoreCase = Ложь; //Игнорировать регистр RegExp.Global = Истина; //Поиск всех вхождений шаблона RegExp.MultiLine = Ложь; //Многострочный режим RegExp.Pattern = "<td>(.*)</td>[\s]*<td align=""right"">(.*)</td>"; // Опис патерна: Вертаємо весь текст і/або цифри між тегами, в результаті отримуєм спочатку назву реквізиту, потім сам реквізит Matches=RegExp.Execute(WinHttp.ResponseText()); ЧислоВхождений=Matches.Count(); Для к = 0 По ЧислоВхождений-1 Цикл Match = Matches.Item(к); SubMatches = Match.SubMatches; ЧислоПодвыражений=SubMatches.Count(); Для н = 0 По ЧислоПодвыражений-1 Цикл SubMatch=SubMatches.Item(н); Если SubMatch="" Тогда //Продолжить; КонецЕсли; Результат = СтрЗаменить(SubMatch,""",""""); Если ВРЕГ(СокрЛП(Результат))=Врег("Iндивiдуальний податковий номер (12 знаків) / номер ДРФО (10 знаків)") Тогда н=н+1; ТЗ.НоваяСтрока(); ТЗ.Параметр="ИНН"; ТЗ.ВБазе = ИНН; ТЗ.ДПА = СтрЗаменить(SubMatches.Item(н),""",""""); ТЗ.Раскраска = СравнитьПоля(ТЗ.ВБазе,ТЗ.ДПА); ТЗ.Исправлять = 0; КонецЕсли; Если ВРЕГ(СокрЛП(Результат))=Врег("Код ЄДРПОУ (8 знаків) / номер із ТРДПАУ (9 знаків)") Тогда н=н+1; ТЗ.НоваяСтрока(); ТЗ.Параметр="ОКПО"; ТЗ.ВБазе = ОКПО; ТЗ.ДПА = СтрЗаменить(SubMatches.Item(н),""",""""); ТЗ.Раскраска = СравнитьПоля(ТЗ.ВБазе,ТЗ.ДПА); ТЗ.Исправлять = 0; КонецЕсли; Если ВРЕГ(СокрЛП(Результат))=Врег("Найменування або прiзвище, iм`я та по батьковi") Тогда н=н+1; ТЗ.НоваяСтрока(); ТЗ.Параметр="Название"; ТЗ.ВБазе = Название; ТЗ.ДПА = СтрЗаменить(SubMatches.Item(н),""",""""); ТЗ.Раскраска = СравнитьПоля(ТЗ.ВБазе,ТЗ.ДПА); ТЗ.Исправлять = 0; КонецЕсли; Если ВРЕГ(СокрЛП(Результат))=Врег("Номер свiдоцтва (8 або 9 знаків)") Тогда н=н+1; ТЗ.НоваяСтрока(); ТЗ.Параметр="№ св-ва"; ТЗ.ВБазе = НомерСвидетельства; ТЗ.ДПА = СтрЗаменить(SubMatches.Item(н),""",""""); ТЗ.Раскраска = СравнитьПоля(ТЗ.ВБазе,ТЗ.ДПА); ТЗ.Исправлять = 0; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
13
rotting
16.01.12
✎
17:27
|
(12) За код спасибо, но я не знаю какие пост параметры передавать именно для моего сайта, может подскажешь как их узнать?
|
|||
14
FN
16.01.12
✎
18:57
|
(13) твой сайт берет информацию с сайта ДПА. в (12) код для доступа к сайту ДПА. Поиск по ИНН,ОКПО,№Свид или названию.
|
|||
15
FN
16.01.12
✎
19:05
|
(14) + код для 7.7, но там буквально СоздатьОбъект заменить на Новый COMОбъект
|
|||
16
rotting
16.01.12
✎
19:27
|
(15) у меня не ДПА, у меня юр портал
помогло вот это IE.Busy |
|||
17
FN
16.01.12
✎
19:36
|
(16) я имел ввиду, что функционал странички http://jurportal.org/tax_base полностью соответствует функционалу странички http://sta.gov.ua/control/uk/vat/search
а в (12) готовый код получения нужных данных. Причем быстрее чем через IE |
|||
18
rotting
17.01.12
✎
18:50
|
(17) да ДПА есть не плательщики НДС?
|
|||
19
FN
17.01.12
✎
19:48
|
(18) хм... нет.
Значит я ошибся, юрпортал не дублирует дпа |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |