分享

终于找到啦!在VB.NET中如何保存网页

 百眼通 2014-10-18

此处提供几种方法:

 

1) 你可以使用System.Net.WebClient类直接将网页保存成html文件。

 

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, _

                        ByVal e As System.EventArgs) Handles Button1.Click

        Dim myWebClient As New System.Net.WebClient

        myWebClient.DownloadFile("http://forums.microsoft.com/MSDN/default.aspx", _

                        "C:\msdn.html")

    End Sub

End Class

 

 

2) 你可以使用CDOADODB组件将完整的网页保存成.mht文件。

首先添加两个引用:“Microsoft CDO For Windows 2000 Library”“Microsoft ActiveX Data Objects 2.5 Library”

项目菜单 -> 添加引用... -> COM标签

 

Imports ADODB

Imports CDO

Public Class Form1

 

    Private Sub Button1_Click(ByVal sender As System.Object, _

                        ByVal e As System.EventArgs) Handles Button1.Click

        SavePage("http://forums.microsoft.com/MSDN/default.aspx", "C:\msdn.mht")

    End Sub

 

    Private Sub SavePage(ByVal Url As String, ByVal FilePath As String)

        Dim iMessage As CDO.Message = New CDO.Message

        iMessage.CreateMHTMLBody(Url, _

        CDO.CdoMHTMLFlags.cdoSuppressNone, "", "")

        Dim adodbstream As ADODB.Stream = New ADODB.Stream

        adodbstream.Type = ADODB.StreamTypeEnum.adTypeText

        adodbstream.Charset = "US-ASCII"

        adodbstream.Open()

        iMessage.DataSource.SaveToObject(adodbstream, "_Stream")

        adodbstream.SaveToFile(FilePath, _

                  ADODB.SaveOptionsEnum.adSaveCreateOverWrite)

    End Sub

 

End Class

 

 

   相关帖子:

http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/c09c132c-5046-42f1-b1f8-11a5d16f458c/

 

3) 你可以通过WebBrowser控件保存网页内容。

 

Public Class Form1

 

    Private Sub Form1_Load(ByVal sender As System.Object, _

                        ByVal e As System.EventArgs) Handles MyBase.Load

        WebBrowser1.Navigate("http://forums.microsoft.com/MSDN/default.aspx")

    End Sub

 

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, _

                        ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _

                        Handles WebBrowser1.DocumentCompleted

        '获取入口html 代码并保存成.html 文件

        Dim MSDNpage As String = WebBrowser1.DocumentText

        My.Computer.FileSystem.WriteAllText("C:\msdn1.html", MSDNpage, True)

        ' 获取页面主体内容文本并保存成.txt文件

        Dim MSDNpage As String = WebBrowser1.Document.Body.InnerText

        My.Computer.FileSystem.WriteAllText("C:\msdn2.txt", MSDNpage, True)

    End Sub

 

End Class

 

总结一下:第一种方法比较好用,当url内容变更后会即时保存下已经变更的内容到html静态网页别保存到磁盘中,不过不足之处,如果这个html文件已经存在磁盘上必须先把它删除才能覆盖,我用了一个函数对文件进行删除操作: Shared Sub DeleteFile(ByVal fpath As String)
        If IO.File.Exists(fpath) Then
            '删除文件file的方法1:删除到回收站里面。
            ' My.Computer.FileSystem.DeleteFile(fpath, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin, FileIO.UICancelOption.DoNothing)
            '删除文件file的方法2:直接从硬盘上删除。
            IO.File.Delete(fpath)
        End If

调用:Call DeleteFile("D:\XX.html")

第二种方式可以将动态网页全部内容保存成mht格式文件,但有个问题一直没解决,希望有高手能解答,当动态文件有变化时,保存下来的mht文件还是变化之前的内容。

第三种方式还没有试过,不过应该也是可行的!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多