Нет особой причины. Сколько раз интервалы ожидания действительно зависят от целевого сайта. Вы можете установить время ожидания на 1 секунду и увеличить максимальный счет на основе вашего опыта. Так как вы хотите получить только текст, вы можете настроить браузер так, чтобы отключить загрузку мультимедиа (фотографии и видеоролики) с блокировкой рекламы, даже разрешить запуск сценария только в основном домене (сторонние сценарии отключены).

исал скрипт на vba в сочетании с селеном для анализа всех названий компаний, доступных на веб-странице. На веб-странице активирован метод отложенной загрузки, поэтому в каждом свитке отображается только 20 ссылок. Если я прокручиваю 2 раза, то количество видимых ссылок равно 40 и так далее. На этой веб-странице доступно 1000 ссылок. Мой скрипт ниже может достигнуть нижней части этой страницы, обрабатывая всю прокрутку и извлекая все имена, доступные на этой веб-странице.

Однако после каждой прокрутки необходимо подождать некоторое время, пока эта веб-страница обновит содержимое. Это где я использовалhardcoded delay но процесс жесткого кодирования очень противоречив, и иногда он заставляет браузер завершать работу до завершения всей операции.

Как я могу изменить эту часть.Wait 6000 чтобы сделать этоExplicit Wait вместоHardcoded Wait.

Это то, что я написал до сих пор:

Sub Getlinks()
    Dim driver As New ChromeDriver, prevlen&, curlen&
    Dim posts As Object, post As Object

    With driver
        .get "http://fortune.com/fortune500/list/"
        prevlen = .FindElementsByClass("company-title").Count

        Do
            prevlen = curlen
            .ExecuteScript ("window.scrollTo(0, document.body.scrollHeight);")

            .Wait 6000  ''I like to kick out this hardcoded delay and use explicit wait in place

            Set posts = .FindElementsByClass("company-title")
            curlen = posts.Count
            If prevlen = curlen Then Exit Do
        Loop

        For Each post In posts
            R = R + 1: Cells(R, 1) = post.Text
        Next post
    End With
End Sub

Ответы на вопрос(6)

Ваш ответ на вопрос