从页面源中提取信息

时间:2013-05-07 23:35:43

标签: vb.net visual-studio-2010 visual-studio

好的,所以我一直有很多麻烦 Web浏览器控制我正在处理的一些应用程序。 他们都有同样的问题。我想让应用程序导航的网页读取将页面源文本写入变量。我还需要能够保存文件。

一些源代码:

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

结束班

我遇到的第一件事是它在拉动Document文本之前永远不会等待网页加载。我尝试了许多不同的方法来解决人们发布的不同解决方案。奇怪的是,如果我第二次这样做,它似乎总能奏效。

如果单击Button2,我想将最终生成的网页作为swf保存到所选目录。

感谢您在任何地方寻求帮助

1 个答案:

答案 0 :(得分: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