Здравствуйте! Требуется средствами VBA собрать данные о наличии товаров в разных магазинах. Пример страницы товара: https://superakb.ru/catalogue/varta-sd-77-ach-l-e44_4361/ На странице есть фраза: "В наличие в N магазинах", из html можно выбрать, какие это конкретно магазины. Проблема в том, что когда я запрашиваю эту же страницу через WinHttpRequest, она выдается немного в другом виде, и там присутствует фраза "Нет в наличие". Возможно, проблема решилась бы указанием в запросе заголовков, но подбор заголовков наугад ни к чему не привел. Текущий вариант кода ниже, оставлен только User-Agent.
Код
Sub test_internet()
addr = "https://superakb.ru/catalogue/varta-sd-77-ach-l-e44_4361/"
t = 6
Set xmlhttp = CreateObject("WinHttp.WinHttpRequest.5.1")
xmlhttp.Open "GET", addr, True
xmlhttp.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:65.0) Gecko/20100101 Firefox/65.0"
xmlhttp.Send
If Not xmlhttp.WaitForResponse(t) Then
MsgBox "timeout", URL: Exit Sub
End If
txt = xmlhttp.ResponseText
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText txt
.PutInClipboard
End With
End Sub
Подскажите, пожалуйста, каких заголовков не хватает, или, если дело не в них, как решить проблему. Спасибо!
Function WebPageText(ByVal sURL As String) As String
On Error Resume Next
Set ie = CreateObject("InternetExplorer.Application"): ' загружаем браузер Internet Explorer
Таймер = Timer
ie.Navigate sURL ' загружаем сайт
'ie.Visible = 1
While ie.busy Or (ie.readyState <> 4)
Application.StatusBar = "Открываю страницу для ячейки: " _
& i & ", " & j & ". Осталось сек: " _
& 12 - Int(Timer - Таймер)
DoEvents
If Timer - Таймер > Abs(12) Then Exit Function
Wend ' ждем, пока загрузится страница
WebPageText = ie.Document.body.innerText ' считываем текст веб-страницы
ie.Quit: Set ie = Nothing ' закрываем браузер
End Function
Насколько я понимаю, это выдаст текст без HTML-тегов. Семантический анализ намного проще проводить с тегами. Кроме того, конкретно в этом случае список магазинов "скрыт", и при загрузке текста через браузер не будет виден.
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)