Получение HTML кода после полной загрузки страницы средствами VBA, Страница загружается динамически, сначала идет "заставка"
Пользователь
Сообщений: Регистрация: 20.05.2015
31.08.2019 20:52:14
Всем добрый вечер! Есть сайт . Пытаюсь парсить HTML код, но проблема в том, что пока данные на сайте подгружаются, HTML код не содержит нужных данных, а с помощью своего кода получаю именно HTML-код "заставки". Вопрос в том, как получить уже "прогруженный" код страницы.
Код
Sub primer()
Dim my_url As String
Dim html_doc As Variant, xml_obj As Variant
Dim Tag_tab As Object
my_url = "http://www.nowgoal.com/6in1.aspx?id=31"
Set html_doc = CreateObject("htmlfile")
Set xml_obj = CreateObject("MSXML2.XMLHTTP")
xml_obj.Open "GET", my_url, False
xml_obj.send
html_doc.body.InnerHTML = xml_obj.responseText
Set xml_obj = Nothing
MsgBox html_doc.body.getElementsByTagName("table")(0).getElementsByTagName("tr")(0).innertext
End Sub
Чтобы данные подгружались, нужно чтобы работали скрипты Скрипты работают в браузере Ваш же код браузер не использует
2 варианта решения проблемы:
1) грузить страницу средствами браузера IE:
Код
' создаём объект IE
Set IE = CreateObject("InternetExplorer.Application")
' переходим по ссылке в браузере
IE.Navigate URL
' ждём, пока страница загрузиться
While IE.Busy Or (IE.ReadyState <> 4): DoEvents: Wend
' считываем HTML код веб-страницы в текстовую переменную
Code$ = IE.Document.body.innerHtml
2) заметно усложнять код, выполняя пост запросы, как это делает скрипт в браузере после загрузки страницы
Игорь, добрый день! С вашей помощью код работал долгое время без проблем. Вчера-сегодня страница не прогружается (на сайте видимых проблем нет), опять получаю "заставку". Не подскажете в чем может быть проблема?
Изменено: - 15.01.2020 10:57:47
Пользователь
Сообщений: Регистрация: 23.12.2012
15.01.2020 13:37:20
ну так посмотрите, работает ли сайт в браузере IE может, паузу (1-2 сек) необходимо добавить в код
Пользователь
Сообщений: Регистрация: 20.05.2015
15.01.2020 14:46:44
Спасибо, действительно не прогружается сайт дальше заставки в IE.
Пользователь
Сообщений: Регистрация: 20.05.2015
10.02.2022 22:48:08
Здравствуйте! В продолжение темы. Время идет и сайт регулярно модернизируется. Парсер конечно же перестает работать. Столкнулся с новой проблемой, которую сам не смог решить. И так, суть проблемы. Имеем тот же сайт Методами, которые описаны выше в топе, получаю исходный код страницы. Но проблема в том, что он не содержит нужные мне данные и проблема не решается даже при полной прогрузке страницы. Для понимания и наглядности, мне нужны данные, которые содержатся в следующих таблицах Код элемента у них такой -тег <table> (содержит все необходимые данные): Но в коде страницы это выглядит так:
То есть контейнер </ div id="odds"></div> открылся и тут же закрылся, не предоставив никаких данных парсеру. На сколько я понимаю, дело в скриптах. Собственно вопрос в том, возможно ли средствами VBA получить полный код страницы? Буду признателен за любую помощь и замечания.
Пользователь
Сообщений: Регистрация: 23.12.2012
10.02.2022 23:39:00
Ну так вы смотрели исходный код страницы в современном браузере, типа Chrome Там тег непустой, ибо скрипт отрабатывает Ваш же макрос использует браузер IE Открыв ссылку в браузере IE, вы обнаружите, что отныне скрипты в нём не отрабатывают, и потому данные на странице не отображаются. Соответственно, таким способом эти данные больше не извлечь
Пользователь
Сообщений: Регистрация: 20.05.2015
11.02.2022 00:10:54
Игорь, спасибо за ответ! А другими методами VBA возможно решить эту задачу?