我使用Inet控件下载了html文件,这个当然是文本的html数据了,我在工程中引用了MSHTML库,然后我想使用DCOM来操作html(提取其中的数据),不知道大家有没有什么代码,或者资料介绍一下.目前我自己在这个方面真的是焦头烂额,苦啊~~~

解决方案 »

  1.   

    我曾经试过下面的方法,但是就是没有什么好的效果.而且老是出错~!~!~!
    Dim doc As IHTMLDocument2Private Sub Inet1_StateChanged(ByVal State As Integer)If State = 11 Then
    InfoLabel.Caption = " 出现错误!可能无法访问网络或其他原因" & vbCrLf
    Exit Sub
    ElseIf State = 12 Then
    HtmlCode = ""
    Do '循环接收数据
        DoEvents
        bufStr = Inet1.GetChunk(1024, icString)    If Len(bufStr) = 0 Then Exit Do
        '接受到的所有数据存放在变量 "HtmlCode"中
        HtmlCode = HtmlCode & bufStr
    Loop
    'Text1.Text = HtmlCode '不能超过32k
       
    bufStr = "" '使bufStr为空,保存下面提出的小说    
        FinalText = CutMark(bufStr)
        Text1.Text = FinalText  
        MousePointer = vbDefault
        Timer1.Enabled = True '可以执行下一页面的下载了
    End If
    End Sub
      

  2.   

    为什么要用Inet控件下载,用API函数URLDownloadTofile函数多好?
    Option Explicit
    '声明
    Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    '
    Private Function DownloadFile(URL As String, LocalPath As String) As Boolean
        If Not URLDownloadToFile(0, URL, LocalPath, 0, 0) Then
            DownloadFile = True
        Else
            DownloadFile = False
        End If
    End Function
    '实例
    Private Sub Command1_Click()
        Dim a As Boolean
        a = DownloadFile("http://community.csdn.net/Expert/topic/3850/3850250.xml?temp=.888714", "c:\abc.txt")
        Debug.Print a
    End Sub
      

  3.   

    如果你不想下载到本地文件,再读取的话使用XMLHTTP对象,看下边的实例:Private Sub Command1_Click()
        URL = "http://community.csdn.net/Expert/topic/3850/3850250.xml?temp=.7217218"
        Set oSend = CreateObject("Microsoft.XMLHTTP")
        SourceCode = oSend.open("GET", URL, False)
        oSend.send
        If Err.Number <> 0 Then Debug.Print Err.Description
        SourceCode = bytes2BSTR(oSend.responseBody)
        Debug.Print SourceCode
    End SubFunction bytes2BSTR(vIn)
        strReturn = ""
        For i = 1 To LenB(vIn)
        ThisCharCode = AscB(MidB(vIn, i, 1))
        If ThisCharCode < &H80 Then
        strReturn = strReturn & Chr(ThisCharCode)
        Else
        NextCharCode = AscB(MidB(vIn, i + 1, 1))
        strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
        i = i + 1
        End If
        Next
        bytes2BSTR = strReturn
    End Function
      

  4.   

    大哥,很谢谢你的回答,我的目的也是很简单的。就是利用一个DCOM(反正不管是什么组件吧),来进行提取一个HTML(或者XML)中的数据。比如说提取<table>和</table>标记之间的数据。
    最好就是可以使用集合。MSHTML中的ElementCollection就很好。但是我不知道在没有使用WebBrowser的情况下,也就是说没有一个web1.Document的情况下,怎样操作纯文本的html?
      

  5.   

    今天晚上成功的实现了不要WebBrowser,也创建了一个Document的,使用的是MSHTML类来下载HTML文件
      

  6.   

    Dim objMSHTML As New MSHTML.HTMLDocument
    Dim objDocument As MSHTML.HTMLDocumentSet objDocument = objMSHTML.createDocumentFromUrl("http://www.163.com", vbNullString)
    While objDocument.ReadyState <> "complete"
          DoEvents
    WendMsgBox objDocument.body.innerTextcreateDocumentFromUrl函数参数试着变动就能实现了
      

  7.   

    楼上的,你跟我昨天晚上做的差不多,不过我是从VC改过来的.另外还是有点问题,createDocumentFromUrl访问搜狐的时候,竟然有广告弹出来,我晕,不知道这是怎么回事.....~~~~~
      

  8.   

    很好我正需要呢,不过大家为啥举例子的时候老拿csdn开刀啊^_^