此处提供几种方法:
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)
你可以使用CDO和ADODB组件将完整的网页保存成.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文件还是变化之前的内容。
第三种方式还没有试过,不过应该也是可行的!
|