Страницы: 1
RSS
Получение HTML кода после полной загрузки страницы средствами VBA, Страница загружается динамически, сначала идет "заставка"
 
Всем добрый вечер! Есть сайт http://www.nowgoal.com/6in1.aspx?id=31. Пытаюсь парсить 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:
https://excelvba.ru/code/GetWebPageText

Код
' создаём объект 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) заметно усложнять код, выполняя пост запросы, как это делает скрипт в браузере после загрузки страницы
Изменено: Игорь - 31.08.2019 21:25:07
 
Спасибо большое! Работает, воспользовался функцией.
 
Игорь, добрый день! С вашей помощью код работал долгое время без проблем. Вчера-сегодня страница не прогружается (на сайте видимых проблем нет), опять получаю "заставку". Не подскажете в чем может быть проблема?
Изменено: Betting - 15.01.2020 10:57:47
 
ну так посмотрите, работает ли сайт в браузере IE
может, паузу (1-2 сек) необходимо добавить в код
 
Спасибо, действительно не прогружается сайт дальше заставки в IE.
 
Здравствуйте! В продолжение темы. Время идет и сайт регулярно модернизируется. Парсер конечно же перестает работать. Столкнулся с новой проблемой, которую сам не смог решить. И так, суть проблемы. Имеем тот же сайт https://www.nowgoal5.com/football/6in1/?id=23
Методами, которые описаны выше в топе, получаю исходный код страницы. Но проблема в том, что он не содержит нужные мне данные и проблема не решается даже при полной прогрузке страницы. Для понимания и наглядности, мне нужны данные, которые содержатся в следующих таблицах

Код элемента у них такой -тег <table> (содержит все необходимые данные):

Но в коде страницы это выглядит так:


То есть контейнер </ div id="odds"></div> открылся и тут же закрылся, не предоставив никаких данных парсеру. На сколько я понимаю, дело в скриптах.
Собственно вопрос в том, возможно ли средствами VBA получить полный код страницы? Буду признателен за любую помощь и замечания.
 
Ну так вы смотрели исходный код страницы в современном браузере, типа Chrome
Там тег непустой, ибо скрипт отрабатывает
Ваш же макрос использует браузер IE
Открыв ссылку в браузере IE, вы обнаружите, что отныне скрипты в нём не отрабатывают, и потому данные на странице не отображаются.
Соответственно, таким способом эти данные больше не извлечь
 
Игорь, спасибо за ответ! А другими методами VBA возможно решить эту задачу?
Страницы: 1
Наверх