Я пытаюсь исправить калькулятор для Excel, который извлекает самую последнюю международную ставку надбавки за TNT с этого сайта: https://www.tnt.com/express/en_nz/site/shipping-services/fuel-surcharges-apac.html Как вы можете видеть, последняя ставка надбавки составляет 15,75%.
Скриншот, который я загрузил, представляет собой особый тег p, в который я хочу извлечь содержимое из «15.75%». Снимок экрана веб-страницы
У меня есть следующий код VBA для проверки, я получаю правильные элементы:
Sub GetFuelSurchargeWeb()
Dim xhr As Object
Dim doc As MSHTML.HTMLDocument
Dim table As Object
Dim tableCell As HTMLHtmlElement
Dim valCharge As String, url As String, inrText As String, searchTag1 As String, searchTag2 As String, valFrom As String
Dim i As Integer, tag1Indx As Integer, tag2Indx As Integer, tag3Indx As Integer
Dim searchTag3 As String
Dim ObjP As Object
url = "https://www.tnt.com/express/en_nz/site/shipping-services/fuel-surcharges-apac.html"
searchTag1 = "FROM"
searchTag2 = ":"
searchTag3 = ":"
On Error GoTo ErrHndlr
Application.ScreenUpdating = False
Set xhr = CreateObject("MSXML2.XMLHTTP")
With xhr
.Open "GET", url, False
.send
If .readyState = 4 And .status = 200 Then
Set doc = New MSHTML.HTMLDocument
doc.body.innerHTML = .responseText
Else
MsgBox "Error" & vbNewLine & "Ready state: " & .readyState & _
vbNewLine & "HTTP request status: " & .status
End If
End With
Set ObjP = doc.querySelectorAll("p")
Debug.Print (ObjP.Length)
For Each table In ObjP
Debug.Print (table.innerHTML)
Next table
Когда я печатаю innerHTML элементов тега p,Похоже, что в первом параграфе «Неделя», «Доллар на галлон», «Все услуги», но затем пропускается «23 сентября 2019 - 29 сентября 2019», «1.833», «15,75%», хотя онивсе они содержатся в тегах p.
Я только начал использовать VBA и не понимаю, как получить это значение.Был бы признателен, если кто-нибудь может помочь мне с решением или альтернативой, чтобы получить значения, которые я хочу.В идеале мне нужен элемент, содержащий текущую неделю, также «23 сентября 2019 года - 29 сентября 2019 года», но сейчас меня интересует только ставка доплаты.