В этом случае лучше использовать прямой селектор, но поскольку для некоторых ссылок, где нет в наличии, второй класс меняется на .prod-stock-out
, вам нужно проверить, чтобы определить, какой селектор класса потомка использовать.
CSS:
.product-section .prod-stock
VBA:
ie.document.querySelector(".product-section .prod-stock").innerText
Option Explicit
Public Sub GetInfo()
Dim ie As New InternetExplorer, wks As Worksheet
Dim j As Long, urls()
Set wks = ThisWorkbook.Worksheets("Sheet1")
urls = Application.Transpose(wks.Range("A1:A2").Value)
With ie
.Visible = True
For j = LBound(urls) To UBound(urls)
.Navigate2 urls(j)
While .Busy Or .readyState < 4: DoEvents: Wend
wks.Cells(j, "C") = .document.querySelector(".col-sm-8 h1").innerText
If .document.getElementsByClassName("product-section")(0).getElementsByClassName("prod-stock").Length = 0 Then
wks.Cells(j, "D") = .document.querySelector(".product-section .prod-stock-out").innerText
Else
wks.Cells(j, "D") = .document.querySelector(".product-section .prod-stock").innerText
End If
Next
.Quit
End With
End Sub
Вы также можете использовать более читабельный:
If .document.querySelectorAll(".product-section .prod-stock").Length = 0 Then
wks.Cells(j, "D") = .document.querySelector(".product-section .prod-stock-out").innerText
Else
wks.Cells(j, "D") = .document.querySelector(".product-section .prod-stock").innerText
End If