Существует вызов API, который вы можете найти на вкладке сети.Он возвращает строку json, которую вы можете проанализировать как jsonparser , чтобы получить предложения.Я использую jsonconverter.bas, который после загрузки добавляю в проект, а затем захожу в VBE> Инструменты> Ссылки> Добавить ссылку на Microsoft Scripting Runtime.
Сам URL-адрес представляет собой queryString, то есть он построен из различных параметров.,Например, есть параметр limit
, значение которого равно 11
, которое указывает количество возвращаемых предложений.Вы можете изменить и / или удалить некоторые из них.Ниже я конкатенирую константу SEARCH_TERM
в строку запроса, чтобы представить значение вашего поиска (то, которое будет введено в поле поиска).
Я не знаю, являются ли какие-либо из параметров основанными на времени(т.е. истекает со временем - я сделал несколько запросов без проблем, так как вы разместили свой вопрос).Возможно, что необходимые значения, основанные на времени, могут быть получены с помощью предварительного запроса GET на странице поиска Amazon.
params = (
('session-id', '141-0042012-2829544'),
('customer-id', ''),
('request-id', '7E7YCB7AZZM1HQEZF2G1'),
('page-type', 'Search'),
('lop', 'en_US'),
('site-variant', 'desktop'),
('client-info', 'amazon-search-ui'),
('mid', 'ATVPDKIKX0DER'),
('alias', 'aps'),
('b2b', '0'),
('fresh', '0'),
('ks', '76'),
('prefix', 'TRAVEL'),
('event', 'onKeyPress'),
('limit', '11'),
('fb', '1'),
('suggestion-type', ['KEYWORD', 'WIDGET']),
('_', '1556820864750')
)
VBA:
Option Explicit
Public Sub GetTable()
Dim json As Object, suggestion As Object '< VBE > Tools > References > Microsoft Scripting Runtime
Const SEARCH_TERM As String = "TRAVEL"
Const SEARCH_TERM2 As String = "BOOKS"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://completion.amazon.com/api/2017/suggestions?session-id=141-0042012-2829544" & _
"&customer-id=&request-id=7E7YCB7AZZM1HQEZF2G1&page-type=Search&lop=en_US&site-variant=" & _
"desktop&client-info=amazon-search-ui&mid=ATVPDKIKX0DER&alias=aps&b2b=0&fresh=0&ks=76&" & _
"prefix=" & SEARCH_TERM & "&event=onKeyPress&limit=11&fb=1&suggestion-type=KEYWORD&suggestion-type=" & _
"WIDGET&_=1556820864750", False
.setRequestHeader "User-Agent", "Mozilla/5.0"
.send
Set json = JsonConverter.ParseJson(.responseText)("suggestions")
End With
For Each suggestion In json
Debug.Print suggestion("value")
Next
End Sub