Утро,
У меня возникли проблемы с веб-скрейпом из Excel, из-за чего 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), изображение которой я пытался прикрепить, но мне не хватает репутации (см. ссылку в конце поста)...
Большое спасибо за любую помощь.
PS. веб-страница примерно структурирована с помощью таблицы с двумя столбцами, строки которой я изолирую с помощью «основных деталей». Первый столбец - это «многоуровневый переключатель», а затем элементы, которые я хочу, представляют собой внутренний текст, например. "заглавие". Мне нужно использовать tieredtoggle, поскольку объекты в каждом столбце имеют повторяющиеся имена классов.
tdElement
— это коллекция, вам придется перебирать ее так же, как вы делаете это дляtrElements
- person Flakes   schedule 18.07.2015tdElement(0)
(первый элемент в коллекции), или вы можете использовать getElementById() и указать идентификатор первого элемента. Дополнительная информация на этой странице Mozilla - person paul bica   schedule 18.07.2015