getelementsbyclassname Excel vba - 重复调用时出错

时间:2015-07-18 10:34:38

标签: excel-vba getelementsbyclassname vba excel

上午,

我在使用Excel的webscrape时遇到问题,getelementsbyclassname无法对某些对象执行操作,抛出“对象不支持此属性或方法”错误。

当我输入getelementsbyclassname的对象本身是getelementsbyclassname方法的结果时,会出现问题。我不确定为什么,特别是当我在一个更大的对象上行动时我可以获得类名...

这是代码提取

''''Boring Variables Declaration I've cut out''''

'Initialise IE
Dim IEApp As New InternetExplorer 
Set IEApp = New InternetExplorer 
IEApp.Visible = True 'JB

'Open page and wait for page to load
  IEApp.navigate ("http://www.anicewebsite.com")
  Do Until IEApp.readyState = READYSTATE_COMPLETE And IEApp.Busy = False
    DoEvents
  Loop

Set HTMLdoc = IEApp.document
Set RefLocation = Sheets("INFO_DUMP").Range("LocationRefCell")
Set trElements = HTMLdoc.getElementsByClassName("basic-details")
For Each trElement In trElements
        'Select the LHS box and extract info
        Set tdElement = trElement.getElementsByClassName("tieredToggle")
        'write start/end locations
        '''''THIS NEXT LINE THROWS AN ERROR'''''
         Data_str = tdElement.getElementsByClassName("title").innerText
        '''''AS DOES'''''
        MyObject=tdElement.getElementsByClassName("title")
         RefLocation.Offset(1, 2).Value = Data_str 
Next 'close tr Loop         

但是,我可以通过

获取'title'对象
For Each trElement In trElements
        Set MyObject=trElement.getElementsByClassName("title")
Next 'close tr Loop

所以错误是,大概是关于tdElement(一个DispHTMLElement Collection)的东西,我试图附上一张图片,但我缺乏声誉(见帖子末尾的链接)......

非常感谢您的帮助。

PS。网页的结构大致是一个2列的表,其中的行与“基本细节”隔离。第一列是“分层切换”,然后我想要的项目是例如内部文本。 “标题”。我需要使用tieredtoggle,因为每列中的对象都有重复的类名

http://i.stack.imgur.com/1tyb6.png

1 个答案:

答案 0 :(得分:0)

您可以使用它来获取innertext。

Data_str = tdElement.getElementsByClassName("title")(0).innerText

您可以输入元素所在的索引值,而不是(" title")(0)。