.NET 4.x Дождаться выполнения обработки страницы - Visual Basic .NET
Формулировка задачи:
Всем привет, ребят
Есть функция, которая парсит сайт и затем записывает нужную инфу в DataGridView. На моем компьютере все работает отлично. Но почему-то на других компьютерах функция работает, парсит все как нужно, но в DataGridView инфу не записывает (Выходит ошибка о не существовании нужного файла). Я грешу на медленную скорость интернета на других компах. Между загрузкой страницы в WebBrowser и ее парсингом стоит задержка в 5 секунд. Видать моего интернета достаточно что бы справится за 5 секунд, а вот на других все печально.
Вопрос 1:
Правильно ли я думаю? Или дело вовсе не в этом? Тогда в чем?
Вопрос 2:
Если я правильно думаю, то как сделать так, что бы парсинг не начинался пока страница не будет полностью загружена? Делать задержку в 5 или 10 секунд как-то не эстетично. Для кого то этого будет слишком много, а для кого то на оборот мало.
Вот сейчас так:
а нужно вместо цикла While вставить некую функцию, которая не даст дальнейшую обработку кода, пока не будет полностью загружена страница. Ну как то так...
Листинг программы
- WebBrowser1.Navigate("http://www.myscore.ru/soccer/")
- Dim sw As Stopwatch = Stopwatch.StartNew()
- While sw.ElapsedMilliseconds < 5000
- Application.DoEvents()
- Thread.Sleep(1)
- End While
- sw.[Stop]()
- File.WriteAllText(parsetmp, WebBrowser1.Document.Body.Parent.OuterHtml, Encoding.GetEncoding(WebBrowser1.Document.Encoding))
Сделал так, но не работает почему то
Листинг программы
- Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
- WebBrowser1.Navigate("http://www.myscore.ru/soccer/")
- PictureBox1.Visible = True
- Do While WebBrowser1.IsBusy = True
- Application.DoEvents()
- Loop
- File.WriteAllText(parsetmp, WebBrowser1.Document.Body.Parent.OuterHtml, Encoding.GetEncoding(WebBrowser1.Document.Encoding))
- DataGridView3.Rows.Clear()
- GetListMatches()
- PictureBox1.Visible = False
- End Sub
Решение задачи: «.NET 4.x Дождаться выполнения обработки страницы»
textual
Листинг программы
- WebBrowser1.Navigate("http://www.myscore.ru/soccer/")
- While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete 'ждем завершения загрузки страницы
- Application.DoEvents()
- End While
- Dim elem As HtmlElement = WebBrowser1.Document.GetElementById("fs")
- While elem Is Nothing OrElse Not elem.Style.Contains("opacity: 1") 'ждем появления данных таблицы на странице после работы js
- elem = WebBrowser1.Document.GetElementById("fs")
- Application.DoEvents()
- End While
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д