2013-05-07 2 views
0

그래, 내가 작업하고있는 몇 가지 응용 프로그램에서 웹 브라우저 컨트롤에 많은 문제가있었습니다. 모두 동일한 문제를 공유합니다. 응용 프로그램에서 웹 페이지를 탐색하도록하려면 페이지 소스의 텍스트를 변수에 쓰십시오. 나중에 파일을 저장할 수 있어야합니다.페이지 소스에서 정보를 가져 오기

일부 소스 코드 :

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 

최종 클래스

내가 가진 문제가 발생하고 우선 웹 페이지는 문서의 텍스트를 당겨 전에로드하는 것이 결코 대기 없다는 것입니다. 나는이 문제를 해결하기 위해 사람들이 게시 한 여러 가지 해결책에서 여러 가지 방법을 시도했다. 이상하게도, 나는 그것을 두 번하면 항상 효과가있는 것처럼 보입니다.

그리고 Button2를 클릭하면 최종 결과 웹 페이지를 swf로 저장하려고합니다. 어떤 도움

덕분에 나는 웹 스크래핑의 어두운 예술이 사방

답변

1

에 오신 것을 환영합니다 찾고있다. 먼저 웹 사이트에서 데이터를 다운로드하는 개별 방법이 있으므로 WebBrowser 대신 WebClient을 사용하는 것이 좋습니다. 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

빠른 응답 감사합니다. 나는 집에 도착하자 마자 이것을 체크 할 것이다. 또한 hlete 어플리케이션에서 html 배열을 파싱 할 필요가 있으므로 언급 한 팩을 살펴 보겠습니다. WebClient가 백그라운드에서 작동합니까, 아니면 저장 대화 상자가 앞에 오게됩니까? – Matt

+1

배경에서 작동합니다. 요청하는 동안 UI를 차단하지 않으려는 경우 비동기 버전도 있습니다. –

+0

이것은 완벽하게 작동합니다. – Matt

관련 문제