Vba: загрузка html-страницы с элементом ajax

Узнай цену своей работы

Формулировка задачи:

Всем привет!
Пытаюсь загрузить с помощью макроса вот такую страницу:
http://ria.ru/politics/
Внизу имеется кнопка "еще 20 материалов", которая дает доступ к новым ссылкам.
Однако стандартный способ:
Function download_web_page(addr$) As String
Set IE = CreateObject("InternetExplorer.Application"): On Error Resume Next
IE.Navigate addr$
While IE.busy Or (IE.readyState <> 3): DoEvents: Wend
Set IEDoc = IE.Document
IEDoc.getElementById("a.list_pagination_next").Click
While IE.busy Or (IE.readyState <> 3): DoEvents: Wend
Set IEDoc = IE.Document
txt$ = IE.Document.body.innerText
IE.Quit: Set IE = Nothing
download_web_page = txt
End Function
не дает ожидаемого результата - собственно, id в выражении [IEDoc.getElementById("a.list_pagination_next").Click] определить никак не могу. Поможите кто может, как загрузить подобную страницу?

Решение задачи: «Vba: загрузка html-страницы с элементом ajax»

textual
Листинг программы
Function download_web_page(addr$) As String
  Set IE = CreateObject("InternetExplorer.Application"): On Error Resume Next
  IE.Navigate addr$
  While IE.busy Or (IE.readyState <> 3): DoEvents: Wend
  Set IEDoc = IE.Document
  'IEDoc.getElementById("a.list_pagination_next").Click
GetNextPageA(IEDoc).Click
  While IE.busy Or (IE.readyState <> 3): DoEvents: Wend
  Set IEDoc = IE.Document
  txt$ = IE.Document.body.innerText
  IE.Quit: Set IE = Nothing
  download_web_page = txt
End Function

' --------------------------------------------
Function GetNextPageA(doc)
  For Each a In doc.getElementsByTagName("A")
    If "list_pagination_next" = a.className Then
      Set GetNextPageA = a
      Exit For
    End If
  Next
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы