上午,
我在使用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,因为每列中的对象都有重复的类名
答案 0 :(得分:0)
您可以使用它来获取innertext。
Data_str = tdElement.getElementsByClassName("title")(0).innerText
您可以输入元素所在的索引值,而不是(" title")(0)。