#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. Кто-нибудь может мне помочь?