我一直在从许多网站上搜索数据而没有任何问题,并且轻松地一遍又一遍地使用相同的代码。但是,我工作的网页/ java是我无法轻易使用的。它比我使用的更强大。
标签结构如此,
div
div
div
div ... div(打开最后一个div,我跟着它到达目的地。)
-div
--div
--- div
---- iframe
-----身体
------ div
------- div
-------- div
(等等更多div)
最后...
------------- div Id = entity_list
-------------- Span id = name
-------------- Span entityid = 123456798
然后以相反的顺序关闭所有备份。
如果我在设置IE对象等后使用下面的代码,以前从来没有遇到过问题。
Set Elements = IE.Document.getElementsByTagName("div")
I = 2
For Each Element In Elements
Worksheet.range(I, 2) = Element.ID
I = I + 1
Next
然而,此代码未到达(div ... div)内的div。它只会在外面拾取所有div。我不确定这会考虑什么类型的div ...嵌入式div?所以我没有运气尝试所有替代解决方案来达到“Span Id”和“Span entityid”。
我已经为div,span,iframe,body尝试了getelement(type)的所有变体,但它就好像它们不存在一样。
如果我尝试像Dim oHtml As HTMLDocument
这样的代码,我总是会出错。我认为它可能是一个参考问题但不知道我需要什么。我不知道它是否会改变任何东西。
我正在工作的页面中还有很多java脚本。但他们从来没有让我遇到任何问题。
任何人都可以帮我理解我需要如何更改代码吗?我不是专家。
经过一段时间的睡眠和新面貌,我现在相信它的“!DOCTYPE html”导致了这个问题。除此之外,代码不会读取任何类型。有什么想法吗?
答案 0 :(得分:0)
所以解决方案非常简单,我只需要添加.contentDocument来访问Iframe中的元素。一旦我这样做,我就会寻找元素“Span”。从来没有处理过iframe,这对我来说是个新手。
Set Elements= IE.Document.getElementById("iframeid").contentDocument
I = 1
For Each Element In Elements.getElementsByTagName("span")
ActiveSheet.Cells(I, 3) = Element.ID
ActiveSheet.Cells(I, 2) = Element.innertext
I = I +1
Next Element
谢谢,我能够通过更多的线索搜索和新鲜的眼睛来弄明白。