Вы не можете надежно извлечь информацию из запроса xmlhttp, выданного на URL, который вы показываете, поскольку контент загружен в формате javascript и не будет работать.
Не уверен, насколько устойчив токен (кажется, ненезависимо от используемого значения), но вы можете присоединиться к productid, который является концом вашего URL, с токеном ajax, присутствующим на странице, и выпустить запрос xmlhttp с использованием параметров querystring и проанализировать ответ json для интересующих элементов.Я использую jsonconverter.bas .После загрузки и установки .bas вам нужно перейти на VBE > Tools > References
и добавить ссылку на Microsoft Scripting Runtime
.
Некоторое тестирование показывает, что после дефиса вместо токена можно добавить любое число, чтобы вы могли случайным образом сгенерировать число для использования.
Стоит отметить, что вы можете разделять запятыминесколько продуктов в строке запроса и, следовательно, сделать массовый запрос.Затем вам нужно будет выполнить цикл For Each
для возвращенной коллекции словарей.
Option Explicit
Public Sub GetInfo()
Const URL As String = "https://www.superdrug.com/micrositeProduct/bulk/769466-1548702898380"
Dim json As Object, title As String, price As String, stocking As String, id As String
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.Send
Set json = jsonconverter.ParseJson(.responsetext)(1)
End With
title = json("name")
price = json("price")("formattedValue") 'json("price")("value")
stocking = json("stockLevel")
id = json("code")
End Sub
Если вы используете браузер, то в одном из тегов сценария присутствует строка json как .innerHTML
, и вы можетелегко извлечь оттуда.