Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447

Парсинг файлов в цикле, обращение на каждом проходе к Awesomium

30.08.2016, 16:14. Показов 3168. Ответов 32

Студворк — интернет-сервис помощи студентам
Если обрабатываю один файл, то все успешно идет, то есть текст вставляю в браузер Awesomium. Вытаскиваю код и обрабатываю как мне нужно.
Когда идет цикл обработки файлов в Awesomium, работа с браузером должна быть также в каждом проходе.
Однако некоторые файлы не обрабатываются, т.к. цикл видимо не дожидается Awesomium, а идет своим ходом.

Думаю, нужно сделать ожидание в цикле для каждого прохода, пока закончится обработка в Awesomium.
В цикле паузы не помогают с разным значением брал: Threading.Thread.Sleep(5000)

Отлавливание события:
VB.NET
1
2
3
4
5
6
Private Sub WebControl1_LoadingFrameComplete(sender As Object, e As FrameEventArgs) Handles WebControl1.LoadingFrameComplete
        If e.IsMainFrame Then
            ' Обработка здесь .................
 
        End If
End Sub
В цикле прописано:
VB.NET
1
2
3
                While WebControl1.IsLoading
                    Application.DoEvents()
                End While
Обработку перемещал в цикл, тот же самый результат. Необходимо как-то циклу дождаться, когда загрузится вся страница и обработка выполнится полностью.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.08.2016, 16:14
Ответы с готовыми решениями:

При каждом проходе брекпойнта функция клика дублируется
Подскажите, почему у меня при каждом проходе брекпойнта <1070px событе клика дублируется, т.е. при клике на ".mp_head" у меня...

Реализовать сортировку выбором с выводом максимов на каждом проходе
{вырезано} решите пожалуйста, очень прошу, сейчас нужно до утра сдать, очень прошу, можно с массивом и с вектором. Постановка...

Модифицировать код сортировки так, чтобы на каждом следующем проходе количество сравнений декрементировалось
Помогите разобраться. Нужно модифицировать так, чтобы на втором проходе было 8 сравнений, на третьем 7 и т.д. #include <iostream> ...

32
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.09.2016, 13:54  [ТС]
Студворк — интернет-сервис помощи студентам
Все отлично работает, только пройдя несколько десятков проходов (примерно 30-40 итераций), останавливается процесс. Все бы нечего только обрабатывать нужно сотни файлов. Изменял Net Framework с 4.0 ... 6.1 не помогло, Awesomium последней версии 1.7.5.1.
Пишет ошибку:
Исключение типа "System.FormatException" возникло в mscorlib.dll, но не было обработано в коде пользователя
Дополнительные сведения: Строка не распознана как действительное логическое значение.
Ругается на строку:
VB.NET
1
If Boolean.Parse(WebControl1.ExecuteJavascriptWithResult("!document.querySelector('h3')")) Then
Я так понимаю в коде нет ошибок, может быть как-то протолкнуть нужно браузер.

Добавлено через 9 минут
Убирал обработанные файлы из папки и вновь начинал обработку. На файлах где была остановка ранее, все обрабатывается уже нет задержки, проблема не в моих файлах. Я вначале из html файлов удаляю все теги и браузеру даю только обычный текст.
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
09.09.2016, 14:19
Egor2014, а какую строку выражение возвращает, когда вылетает ошибка?
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.09.2016, 14:22  [ТС]
А где это посмотреть, скажите гляну... Картинку еще прикрепляю посмотрите.
Миниатюры
Парсинг файлов в цикле, обращение на каждом проходе к Awesomium  
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
09.09.2016, 15:00
Цитата Сообщение от Egor2014 Посмотреть сообщение
А где это посмотреть
Во время отладки, на этой самой строке, проверь значение, которое возвращает выражение WebControl1.ExecuteJavascriptWithResult("!document.querySelector('h3')"). Его надо выделить и в контекстном меню есть пункт Быстрая проверка..., с помощью которого можно вычислить его значение.
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.09.2016, 15:11  [ТС]
Parse error BC30451: "Parse" не объявлена. Возможно, она недоступна из-за своего уровня защиты.
Миниатюры
Парсинг файлов в цикле, обращение на каждом проходе к Awesomium  
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
09.09.2016, 15:14
Цитата Сообщение от Egor2014 Посмотреть сообщение
"Parse" не объявлена.
Там Parse и не должно быть. Я же написал
Цитата Сообщение от diadiavova Посмотреть сообщение
Его надо выделить
То есть выделить надо выражение
Цитата Сообщение от diadiavova Посмотреть сообщение
WebControl1.ExecuteJavascriptWithResult( "!document.querySelector('h3')")
Вот именно это надо выделить и вычислить значение.
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.09.2016, 15:21  [ТС]
2 картинки когда жму пересчитать, то результат на 2 картинке.

Выделяю точно как вы сказали, только в строке Выражения почему-то не все показывает.
Миниатюры
Парсинг файлов в цикле, обращение на каждом проходе к Awesomium   Парсинг файлов в цикле, обращение на каждом проходе к Awesomium  
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
09.09.2016, 15:39
Странно, конечно, что работает-работает, а потом такое. Обычно undefined вылетает в JavaScript при попытке вызывать несуществующий у объекта метод или свойство. В данном случае непонятно, что воспринимается как несуществующий член. querySelector что ли? Тут надо смотреть, что с документом, когда такое вылетает. Думаю, это будет непросто. Но, если нужно простое решение, то можно попробовать следующее:
Удалять текст из очереди не после вставки его в страницу, а только после того, как будет извлечена и сохранена статистика. Все, что содержится в DocumentReady обернуть в блок Try...Catch и выполнять все в блоке Try, а в Catch просто переходить на страничку заново. Тогда, если будет какой-то сбой, можно будет перезапустить процесс без потери данных.
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
09.09.2016, 17:34  [ТС]
Текст из очереди удаляется в конце. Интересует как правильно написать исключение ошибки в Try написал так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Try 
                   '...........................
                        '   Переходим по метке если нет ключевых фраз
                        GoTo m1
                   '...........................
                   '---------------------------------------------------------
                    '       Сохраняем файл на диск 
                    '---------------------------------------------------------
                    СохранитьToolStripMenuItem_Click(sender, e)
 
                    '   Удаления элемента из очереди
m1:                 qMyQueue.Dequeue()
                    If qMyQueue.Peek() <> "" Then
                    '   Возвращаемся в начало 
                        АнализИзОчередиToolStripMenuItem_Click(sender, e)
                    End If
                End If
            End If
 
        Catch ex As System.FormatException 
            '   Возвращаемся в начало 
            АнализИзОчередиToolStripMenuItem_Click(sender, e)
        Catch ex As Exception
            StatusLabel1.Text = "Конец очереди"
        End Try
    End Sub
Здесь прописал: Catch ex As System.FormatException правильно ли так будет? У меня же выдавало исключение: System.FormatException
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
10.09.2016, 00:57
Можно обойтись простым эксепшном, разные типы исключений обычно используются тогда, когда для них требуется разная обработка.
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
12.09.2016, 14:08  [ТС]
diadiavova, я так и сделал:
VB.NET
1
2
3
        Catch ex As Exception
            '   Обновляем страницу
            WebControl1.Source = New Uri("OLD_URL")
Но все равно процесс спотыкается. Но на некотором проходе при обработке, например 100 файлов, у браузера всё окно превращается в серый фон, а иногда как положено страница загружена, но текст не вставляется. И помогает нажатие кнопки (1-2 нажатия, чаще 1), чтоб продолжить процесс, на которую я просто повесил код:
VB.NET
1
 WebControl1.Source = New Uri("OLD_URL")
Как-то можно это вылечить в коде, без нажатия кнопки?
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
13.09.2016, 11:33
Цитата Сообщение от Egor2014 Посмотреть сообщение
Как-то можно это вылечить в коде, без нажатия кнопки?
Честно говоря, я с этой проблемой не сталкивался, так что вряд ли смогу помочь.
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
13.09.2016, 12:24  [ТС]
Может быть как вариант поставить таймер, запускать его в начале прохода, после сохранения статистики проверять секундомер, и если больше минуты то подсунуть: New Uri
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2016, 12:24

Работа Awesomium в цикле, передача данных и нажатие кнопки в браузере
Необходимо парсить в цикле браузером Awesomium. Передаю данные в цикле For в WebControl1: ...

Обращение к TextBox-ам в цикле
Есть 10 TextBox-oв. Можно ли не прописывать все 10 боксов, а к примеру так, я знаю это не правильно но не могу описать словами: ...

Обращение к объектам в цикле
Помогите с данным кодом - цель чтобы при наведении курсора на объект выдавала true, а кол-во объектов к примеру 10. Кнопки имеют имя btn1,...

обращение к RecordSet в цикле for
здраствуйте. у меня вопрос... пытаюсь обратится к RecordSet следующим образом: for i=1 to 6 Responce.Write rs(&quot;abc&quot;+i)...

Обращение к Label в цикле
Как присвоить значения в цикле разным Labal в цикле? То есть у меня есть 5 Label и массив из 5 элементов, и в каждый по номеру i+1 я должен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru