Ответ 1
Чтобы получить innerText, вы можете использовать getElementsByClassName
еще 2 раза, один из них внутри цикла for each .. next
, так как ваши значения находятся в list-flights -> price -> cash js_linkInsideCell
:
Set priceData = IE.document.getElementsByClassName("list-flights")(0).getElementsByClassName("price")
For Each Item In priceData
Debug.Print Item.getElementsByClassName("cash js_linkInsideCell")(0).innerHTML
Next Item
Использование .querySelectorAll("[class$='price']")
также работает, но после разбора он отключает объект IE. Попробуйте посмотреть, сбой:
Set priceData = IE.document.getElementsByClassName("list-flights")(0).querySelectorAll("[class$='price']")
For Each Item In priceData
Debug.Print Item.getElementsByClassName("cash js_linkInsideCell")(0).innerHTML
Next Item
Некоторые быстрые заметки:
1-Вы можете использовать этот код, чтобы ждать, пока IE-объект загрузит URL-адрес:
Do While IE.Busy
DoEvents
Loop
2 - Иногда, даже если объект IE готов, результаты запроса не возвращаются так быстро. Это означает, что элементы, которые вы ищете, еще не готовы и не существуют, поэтому вы получаете сообщение об ошибке:
Ошибка времени выполнения '91': переменная объекта или с заблокированной переменной блока
Чтобы избежать этого сообщения, мое обходное решение выглядит следующим образом:
Do
On Error Resume Next
Set priceData = IE.document.getElementsByClassName("list-flights")(0).getElementsByClassName("price")
Loop Until Err.Number <> 91
Надеюсь, это поможет.