html document vb.net,VB.net InternetExplorer HtmlDocument

有人可以帮助我吗?我是VB.net的新手,并尝试编写一个非常简单的代码来操纵网站。不过,我不断收到VB.net InternetExplorer HtmlDocument

“‘’类型的未处理的异常在推迟All.exe发生 ....无法转换类型 ‘系统.__ ComObject’的接口类型“COM对象mshtml.HTMLDocument'。这个 操作失败,因为对于具有IID'....)“的接口,COM组件 上的QueryInterface调用。

Dim IE As InternetExplorer

Dim HTMLDoc As HtmlDocument

Dim oHTML_Element As mshtml.IHTMLElement

IE = new InternetExplorer

IE.Navigate("http://www.mediafire.com/")

Do Until IE.ReadyState = 4

Loop

Loop Until Not IE.Busy

' ERROR on the following line

HTMLDoc = IE.Document

' I tried making HTMLDoc as object. It passed the above line, but failed the next line due to no GetElementsByTagName method

For Each oHTML_Element In HTMLDoc.GetElementsByTagName("input")

'....................

Next

+1

你必须等待浏览器实际浏览网页。在那之前,Document属性可能是空的 - 或者其他一些不确定的。 –

+0

您想处理DocumentCompleted事件。 –

+0

谢谢Dan-o。对不起,我编辑了我的帖子。我没有等到一切都完成了。看来IE.Document是一个com.object,不能被转换成HTMLDocument。我不知道为什么它不起作用。它在VBA中工作。 –

Attribute VB_Name = "mdlWebQueryIETable" Option Explicit Sub WebQueryIETable() Dim objIE As Object Dim objIEDOM As Object Dim objTable As Object Dim objTR As Object Dim strURL As String Dim lngRow As Long Dim intTbRow As Integer Dim intCol As Integer Dim intPage As Integer strURL = "http://data.10jqka.com.cn/market/ggsyl/" & "field/syl/order/desc/page/" '把网页赋值给变量strURL Set objIE = CreateObject("InternetExplorer.Application") '创建ie浏览器 objIE.Visible = False '隐藏ie浏览器 Cells.ClearContents '清空用于保存数据的工作表 For intPage = 1 To 5 '使用for...next循环爬取前5个网页的数据 Debug.Print intPage With objIE .Visible = False .navigate strURL & intPage '使用ie对象navigate访问网页,strURL & intPage用于构建网页URL Do Until .readyState = 4 '用do...loop循环等待网页加载完毕 DoEvents Loop Set objIEDOM = .document '用ie对象document属性返回浏览器加载的文档对象,并赋值给对象变量objIEDOM End With Set objTable = objIEDOM.getElementsByTagName("table")(1) '定位网页中待抓取的数据表格 For intTbRow = IIf(intPage = 1, 0, 1) To objTable.Rows.Length - 1 '用for...next循环遍历网页中表格的单元格 Set objTR = objTable.Rows(intTbRow) lngRow = lngRow + 1 For intCol = 0 To objTR.Cells.Length - 1 Cells(lngRow, intCol + 1) = objTR.Cells(intCol).innerText '将网页中表格单元格的innertext属性返回的字符写入工作表中 Next intCol Next intTbRow Next intPage '由于每个网页的查询结果中都有标题行,但是在工作表中保存数据时,只需要保留第一个标题行,因此代码的循环变量的起始值会有所不同。 objIE.Quit Set objIE = Nothing '关闭ie浏览器 Set objIEDOM = Nothing '释放系统资源 Set objTable = Nothing Set objTR = Nothing End Sub
最新发布
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值