Я создал макрос для анализа названий разных фильмов, проходящих через несколько страниц с торрент-сайта.Я использовал InternetExplorer
в сочетании с Html.body.innerHTML парсером (обычно используется с запросами xmlhttp), чтобы ускорить выполнение.Хотя содержимое этого сайта не является динамическим, я использовал IE, чтобы посмотреть, как он себя ведет, когда выполняет очистку в сочетании с Html.body.innerHTML .
Когда я запускаю свой сценарий с использованием IE, он анализирует содержимое, как и ожидалось, и завершает работу.Единственная проблема, с которой я сталкиваюсь, заключается в том, что в каждой нумерации страниц появляется пустой экран из ниоткуда, как на рисунке ниже.
Как избавиться от проблем с пустым экраном?
Мой сценарий (нет проблем при использовании Html.body.innerHTML
вв сочетании с Chrome Driver):
Sub FetchContent()
Const link = "https://yts.am/browse-movies/0/all/action/0/latest?page="
Dim driver As New ChromeDriver, Html As New HTMLDocument, genre$
Dim post As HTMLDivElement, I&, R&
For I = 1 To 3
With driver
.AddArgument "--headless"
.get link & I
Html.body.innerHTML = .ExecuteScript("return document.documentElement.outerHTML")
End With
For Each post In Html.getElementsByClassName("browse-movie-bottom")
R = R + 1: Sheets(1).Cells(R, 1) = post.getElementsByClassName("browse-movie-title")(0).innerText
Next post
Next I
driver.Quit
End Sub
Я хотел бы получить то же поведение, когда я пытаюсь использовать Html.body.innerHTML
в сочетании с IE, но он дает пустые экраны вместе с желаемым результатом:
Sub FetchContent()
Const link = "https://yts.am/browse-movies/0/all/action/0/latest?page="
Dim IE As New InternetExplorer, Html As New HTMLDocument, genre$
Dim post As HTMLDivElement, I&, R&
For I = 1 To 4
With IE
.Visible = False
.navigate link & I
While .Busy Or .readyState < 4: DoEvents: Wend
Html.body.innerHTML = .document.DocumentElement.outerHTML
End With
For Each post In Html.getElementsByClassName("browse-movie-bottom")
R = R + 1: Sheets(1).Cells(R, 1) = post.getElementsByClassName("browse-movie-title")(0).innerText
Next post
Next I
IE.Quit
End Sub
Пустой экран, который появляется на каждой нумерации страниц в случае комбинации IE
с Html.body.innerHTML
: