我怎样才能够把Html文件加到MSHTML的Document对象中去?

糊糊 2005-03-14 07:03:34
我使用Inet控件下载了html文件,这个当然是文本的html数据了,我在工程中引用了MSHTML库,然后我想使用DCOM来操作html(提取其中的数据),不知道大家有没有什么代码,或者资料介绍一下.

目前我自己在这个方面真的是焦头烂额,苦啊~~~
...全文
285 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
guoyangyisuan 2005-04-16
很好我正需要呢,不过大家为啥举例子的时候老拿csdn开刀啊^_^
回复
糊糊 2005-03-20
楼上的,你跟我昨天晚上做的差不多,不过我是从VC改过来的.

另外还是有点问题,createDocumentFromUrl访问搜狐的时候,竟然有广告弹出来,我晕,不知道这是怎么回事.....~~~~~
回复
cso 2005-03-20
Dim objMSHTML As New MSHTML.HTMLDocument
Dim objDocument As MSHTML.HTMLDocument

Set objDocument = objMSHTML.createDocumentFromUrl("http://www.163.com", vbNullString)
While objDocument.ReadyState <> "complete"
DoEvents
Wend

MsgBox objDocument.body.innerText

createDocumentFromUrl函数参数试着变动就能实现了
回复
糊糊 2005-03-20
今天晚上成功的实现了不要WebBrowser,也创建了一个Document的,使用的是MSHTML类来下载HTML文件
回复
糊糊 2005-03-16
大哥,很谢谢你的回答,我的目的也是很简单的。

就是利用一个DCOM(反正不管是什么组件吧),来进行提取一个HTML(或者XML)中的数据。

比如说提取<table>和</table>标记之间的数据。
最好就是可以使用集合。MSHTML中的ElementCollection就很好。

但是我不知道在没有使用WebBrowser的情况下,也就是说没有一个web1.Document的情况下,怎样操作纯文本的html?
回复
VBDN 2005-03-15
如果你不想下载到本地文件,再读取的话使用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 Sub

Function 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
回复
VBDN 2005-03-15
下载成功后,直接读写本地文件就可以了。
回复
VBDN 2005-03-15
为什么要用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
回复
糊糊 2005-03-14
我曾经试过下面的方法,但是就是没有什么好的效果.而且老是出错~!~!~!
Dim doc As IHTMLDocument2

Private 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
回复
相关推荐
发帖
COM/DCOM/COM+
创建于2007-09-28

858

社区成员

VB COM/DCOM/COM+
申请成为版主
帖子事件
创建了帖子
2005-03-14 07:03
社区公告
暂无公告