VBA: нажмите кнопку далее на веб-сайте (цикл)

#vba #loops #web #button #click

#vba #циклы #веб #кнопка #нажмите

Вопрос:

Я пытаюсь получить информацию с веб-сайта со многими страницами. Я уже получил извлечение информации, однако я не могу выполнить цикл, чтобы нажать кнопку «следующая страница» и сделать это снова..

Не могли бы вы мне помочь?

Спасибо, M

 Sub website_test()

Dim ie As Object
Dim ht As HTMLDocument
Dim button As Object
Dim i As Integer

For i = 0 To 100

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True

ie.navigate ("https://old.reddit.com/r/fashion/new/")

Do Until ie.readyState = 4
   DoEvents
Loop
    
Set ht = ie.document

Set elems = ht.getElementsByClassName("title may-blank")

For Each elem In elems
    Debug.Print (elem.innerText)
    Next

Set button = ht.getElementsByTagName("nofollow next")

button(i   1).Click --> **is this where it gets an error (run-time error 91: object variable or width block variable not set)**

Next i
    
End Sub
 

Ответ №1:

В основном я изменил способ получения элемента кнопки «далее» из DOM.

 Sub website_test()

    Dim ie As Object
    Dim ht As HTMLDocument
    Dim button As Object
    Dim i As Integer

    For i = 0 To 5
    
        Set ie = CreateObject("InternetExplorer.Application")
        ie.Visible = True
        
        ie.navigate ("https://old.reddit.com/r/fashion/new/")
        
        Do Until ie.readyState = 4
           DoEvents
        Loop
            
        Set ht = ie.document
        
        Set elems = ht.getElementsByClassName("title may-blank")
        
        For Each elem In elems
            Debug.Print (elem.innerText)
        Next
        Set button = ht.querySelector("[rel='nofollow next']")
        button.Click
        ie.Quit  
    Next i
        
End Sub
 

Комментарии:

1. Спасибо, теперь это работает. Однако он зацикливается на печати, а не на кнопке нажатия. Мне нужно, чтобы он печатал слова на одной странице, нажимал «Далее», печатал слова на новой странице, затем нажимал «Далее»… как я могу это сделать?

2. Кто-нибудь может мне помочь?