方法一:webbrowser的outhtml法

利用webbrowser打开网页,然后通过outhtml输出源码,再加以分析利用。

方法二:WebClient的Downloaddata法

利用webclient下载源码,再加以分析利用。

方法三:XMLHTTP及流对象法

利用MSXML2.XMLHTTP与adodb.stream获取源码,再加以分析利用。

经过多次的测试,获得源码速度的排序是:

方法三 > 方法一 > 方法二

也就是说,用XMLHTTP的方法是获得网页源码最快的方式。方法二所用时间是方法三的三倍,是方法一的二倍

下面我把几个方法的主要过程(函数)列出来,大家可以参考指正

XMLHTTP及流对象法的基本函数

Function GetPage(ByVal url)

        Dim Retrieval
        Retrieval = CreateObject("MSXML2.XMLHTTP")
        With Retrieval
            .Open("Get", url, False) ', "", ""
              .Send()
            GetPage = BytesToBstr(.ResponseBody)
        End With

        Retrieval = Nothing
End Function
Function BytesToBstr(ByVal body)
        Dim objstream
        objstream = CreateObject("adodb.stream")
        objstream.Type = 1
        objstream.Mode = 3
        objstream.Open()
        objstream.Write(body)
        objstream.Position = 0
        objstream.Type = 2
        objstream.Charset = "utf-8"       '这里是设定编码的
        BytesToBstr = objstream.ReadText
        objstream.Close()
        objstream = Nothing
    End Function

WebClient的Downloaddata法的基本函数

Function gethtml(ByVal u As String, ByVal bm As String) As String
        Dim Doc As New WebClient
        Dim T As String = ""
        Try
            If bm = "utf-8" Then
                T = System.Text.Encoding.UTF8.GetString(Doc.DownloadData(u))
            ElseIf bm = "gb2312" Then
                T = System.Text.Encoding.Default.GetString(Doc.DownloadData(u))
            End If
            Return T
        Catch ex As Exception
            Return ""
        End Try
    End Function

webbrowser的outhtml法的基本函数

利用WebBrowser的DocumentCompleted,获取webBrowser1.Document.Body.OuterHtml





=================================
VB.net保存远程文件到本地并用进度条进行显示的方法
 

首先在form里添加一个ProgressBar,命名为prg1

然后指定要下载的文件路径比如

dim remote as string ="http://www.abc.com/aa.exe" '远程文件

dim local as string ="bb.exe" '本地文件

然后进行调用:

DownloadFile(remote, local,Me.prg1)

主函数:

Public Shared Sub DownloadFile(ByVal URL As String, ByVal Filename As String, ByVal Prog As ProgressBar)
    Dim Myrq As HttpWebRequest = HttpWebRequest.Create(URL)
    Dim myrp As HttpWebResponse = Myrq.GetResponse
    Dim totalBytes As Long = myrp.ContentLength
    Prog.Maximum = totalBytes
    Dim st As Stream = myrp.GetResponseStream
    Dim so As Stream = New FileStream(Filename, FileMode.Create)
    Dim totalDownloadedByte As Long = 0
    Dim by(1024) As Byte
    Dim osize As Integer = st.Read(by, 0, by.Length)
    While osize > 0
        totalDownloadedByte = osize + totalDownloadedByte
        System.Windows.Forms.Application.DoEvents()
        so.Write(by, 0, osize)
        Prog.Value = totalDownloadedByte
        osize = st.Read(by, 0, by.LongLength)
    End While
    so.Close()
    st.Close()
End Sub

相关文章