我知道用webbrowser控件的document对象可以操作网页的html内容,但是得等到这一页在webbrowser里下载完了才行,现在好多网页里一些死图片,大图片弄得webbrowser的documentcomplete事件很慢好像死掉一样,我想直接取一页的html,然后提取里面的内容,inet的openurl可以取得html,但是好像没法操作这些东西吧(菜,可能我不知道),大家有没有什么好的办法解决这个问题么,快一点的。谢

解决方案 »

  1.   

    Function OpenUrl (URL)
    Dim P() as byte
    Dim T as string
    B = Inet1.OpenUrl(URL)
    For i = 1 to Ubound(B)
    T = T + Chr(P(T))
    next i
    End function
      

  2.   

    楼上这是什么意思啊,比如我想取出一个网上的html页的所有"ftp://"连接,应该怎么弄呢
      

  3.   

    http://www.microsoft.com/mind/1098/advhost/advhost.asp
      

  4.   

    jiangsheng(蒋晟.MSMVP2004Jan)你认识风剑书生不他也是2004MVP
      

  5.   

    如何用mshtml.htmldocument搞呢,这个好像挺有前途啊
      

  6.   

    回复人: guoyangyisuan(过氧乙酸) :
    楼上这是什么意思啊,比如我想取出一个网上的html页的所有"ftp://"连接,应该怎么弄呢
    ==============================================================================
    call OpenUrl ("网页地址")网页源代码存在了t变量中
    要找“ftp://”是要字符串处理的
      

  7.   

    用instr啊,还有你可以用xmlhttp去读取内容的
      

  8.   

    回mmmvp
    Function OpenUrl (URL)
    Dim P() as byte
    Dim T as string
    B = Inet1.OpenUrl(URL)
    For i = 1 to Ubound(B)
    T = T + Chr(P(T))
    next i
    End function
    ===============
    这段没看懂啊,p()和t好像没有赋值嘛,还有b那个地方应该是个字符串,ubound没用过,看msdn上说是看数组的最大下标啊
      

  9.   

    Option ExplicitPrivate Sub Command1_Click()
        Dim hehe As String
        Dim strUrl As String
        Dim StrStart As String
        Dim StrEnd As String
        Dim Patrn
        Dim replStr
        
        
        strUrl = "http://mmsg.qq.com/cgi-bin/gddylist?Type=13&Sort=1&Page=3"
        StrStart = "<html>"
        StrEnd = "</html>"
        Patrn = ".*(<td width=""35%"" bgcolor=""#[\dABCDE]{6}"">(.*)</td>)[.\n]*"
        replStr = "$2" & Chr(13) & Chr(10)
        
        
      
        hehe = Hello(strUrl, StrStart, StrEnd, Patrn, replStr)
        Text1.Text = hehe
    End Sub
    Function Hello(strUrl, StrStart, StrEnd, Patrn, replStr)
        Dim str As String
        str = GetBody(strUrl)
        str = MyMid(str, StrStart, StrEnd)
        str = ReplaceTest(Patrn, replStr, str)
        Hello = str
    End FunctionFunction MyMid(str, StrStart, StrEnd)
        Dim i As Integer
        Dim j As Integer
        If StrStart = "" Then
            i = 0
        Else
            i = InStr(str, StrStart)
        End If
        If StrEnd = "" Then
            j = Len(str)
        Else
            j = InStr(i, str, StrEnd)
        End If
        MyMid = Mid(str, i, j - i + 1)
    End FunctionFunction ReplaceTest(Patrn, replStr, str1)
        '可以在VB中用RegExp。regexp.tlb是VBScript.DLL 的TypeLib,版本5.5。可以在vb中导入后使用RegExp。
        Dim regEx, match, matches
        Set regEx = New RegExp
        regEx.Pattern = Patrn
        regEx.IgnoreCase = True
        regEx.Global = True
        Set matches = regEx.Execute(str1)
        For Each match In matches
            ReplaceTest = ReplaceTest & regEx.Replace(match.Value, replStr)
        Next
    End FunctionFunction GetBody(Url)
        Dim ObjXML
        Set ObjXML = CreateObject("Microsoft.XMLHTTP")
        With ObjXML
            .Open "Get", Url, False, "", ""
            .SEnd
            GetBody = .ResponseBody
        End With
        GetBody = BytesToBstr(GetBody, "GB2312")
        Set ObjXML = Nothing
    End FunctionFunction BytesToBstr(strBody, CodeBase)
        Dim ObjStream
        Set ObjStream = CreateObject("Adodb.Stream")
        With ObjStream
            .Type = 1
            .Mode = 3
            .Open
            .Write strBody
            .Position = 0
            .Type = 2
            .Charset = CodeBase
            BytesToBstr = .ReadText
            .Close
        End With
        Set ObjStream = Nothing
    End FunctionPrivate Sub Command2_Click()
        Text1.Text = GetBody(Text2.Text)
    End Sub
      

  10.   

    我讲信誉接贴,楼上的可以运行但是比较复杂,其实我需要的是xmlhttp的部分,但是通过看上面的代码知道了正则表达式的概念,再慢慢研究一下吧,60分,蒋晟给的实在看不懂(e文),mmmvp给的代码我觉得有问题,t和p()没有给赋值啊?但意思我理解可能是说用openurl放到一个字符数组取数组大小,然后再用字符串函数操作吧,各给10分
      

  11.   

    我讲信誉接贴,楼上的可以运行但是比较复杂,其实我需要的是xmlhttp的部分,但是通过看上面的代码知道了正则表达式的概念,再慢慢研究一下吧,60分,蒋晟给的实在看不懂(e文),mmmvp给的代码我觉得有问题,t和p()没有给赋值啊?但意思我理解可能是说用openurl放到一个字符数组取数组大小,然后再用字符串函数操作吧,各给10分
      

  12.   

    我都写了可以用xmlhttp你为什么不管我要代码呢??
      

  13.   

    哦,我看到你说用xmlhttp的时候就去找相关的资料了,但是回来一看,流星雨已经给出代码了