2013-05-07 3 views
0

Хорошо, поэтому у меня были проблемы с управлением веб-браузером в нескольких приложениях, над которыми я работаю. Все они имеют одну и ту же проблему. Я хочу, чтобы приложение переходило на веб-страницу s, чтобы прочитать запись текста в источнике страницы в переменную. Я также должен иметь возможность сохранять файлы позже.Вывод информации из источника страницы

Некоторые Исходный код:

Public Class Form4 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim MyFolderBrowser As New System.Windows.Forms.FolderBrowserDialog 
    MyFolderBrowser.Description = "Select the Folder" 
    MyFolderBrowser.ShowNewFolderButton = False 
    Dim dlgResult As DialogResult = MyFolderBrowser.ShowDialog() 
    If dlgResult = Windows.Forms.DialogResult.OK Then 
     TextBox1.Text = MyFolderBrowser.SelectedPath 
    End If 
End Sub 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    If TextBox1.Text = "" Then 
     MessageBox.Show("You have to select a directory!") 
    Else 
     WebBrowser1.Navigate("www.realmofthemadgod.com/version.txt") 
     System.Threading.Thread.Sleep(3000) 
     Dim PageSource As String = WebBrowser1.Document.Body.InnerText 
     WebBrowser1.Navigate("http://www.realmofthemadgod.com/AssembleeGameClient" & PageSource & ".swf") 
    End If 
End Sub 

End Class

Первое, что я имею вопрос с том, что она никогда не ждет веб-страницы, чтобы загрузить перед вытягивать текст документа. Я пробовал много разных способов из разных решений, которые люди отправили, чтобы обойти это. Как ни странно, это всегда срабатывает, если я сделаю это во второй раз.

И хочу сохранить конечную итоговую веб-страницу как swf в выбранную директорию, если нажать кнопку Button2.

Спасибо за любую помощь я искал для этого везде

ответ

1

Добро пожаловать в темное искусство веб выскабливание. Во-первых, я бы рекомендовал использовать WebClient вместо WebBrowser, поскольку он имеет дискретные методы для загрузки данных с веб-сайтов. Похоже, что ваш файл version.txt содержит только нужные вам данные (и без постороннего html), чтобы мы могли скачать его напрямую. Если вам нужно разобрать html, я бы использовал HtmlAgilityPack. Неподтвержденный код, чтобы вы начали:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    If TextBox1.Text = "" Then 
     MessageBox.Show("You have to select a directory!") 
    Else 
     Using wc as New WebClient() 
      Dim version = wc.DownloadString("www.realmofthemadgod.com/version.txt") 
      Dim swf = "http://www.realmofthemadgod.com/AssembleeGameClient" + version + ".swf" 
      wc.DownloadFile(swf,"c:\temp\myswf.swf") 
     End Using 
    End If 
End Sub 
+0

Благодарим за быстрый ответ. Я проверю это, как только вернусь домой. Я также рассмотрю упомянутый вами пакет, так как мне нужно проанализировать массив html в rleated приложении. Будет ли WebClient работать в фоновом режиме или вызвать диалог сохранения в начале? – Matt

+1

Это работает в фоновом режиме. Существует также асинхронная версия, если вы не хотите блокировать ui во время запроса. –

+0

Это прекрасно работает, вы потрясающе – Matt

Смежные вопросы