Обходной путь стратегии загрузки страницы для Selenium Chromedriver в Python
Я хочу ускорить время загрузки страниц на селене, потому что мне не нужно ничего, кроме HTML (я пытаюсь очистить все ссылки, используя BeautifulSoup). Использование PageLoadStrategy.NONE не работает для очистки всех ссылок, и Chrome больше не поддерживает PageLoadStrategy.EAGER. Кто-нибудь знает обходной путь для получения PageLoadStrategy.EAGER в Python?
2 ответа
ChromeDriver - это автономный сервер, который реализует проводной протокол WebDriver для Chromium. Chrome и Chromium все еще находятся в процессе внедрения и перехода на стандарт W3C. В настоящее время ChromeDriver доступен для Chrome на Android и Chrome на рабочем столе (Mac, Linux, Windows и ChromeOS).
Согласно текущему проекту редактора WebDriver W3C Ниже приведена таблица стратегий загрузки страниц, которая связывает ключевое слово возможности pageLoadStrategy с состоянием стратегии загрузки страниц и показывает, какое состояние готовности документа соответствует ему:
Однако, если вы наблюдаете текущую реализацию ChromeDriver, Chrome DevTools учитывает следующий document.readyStates:
document.readyState == 'complete'
document.readyState == 'interactive'
Вот пример соответствующего журнала:
[1517231304.270][DEBUG]: DEVTOOLS COMMAND Runtime.evaluate (id=11) {
"expression": "var isLoaded = document.readyState == 'complete' || document.readyState == 'interactive';if (isLoaded) { var frame = document.createElement('iframe'); frame.name = 'chromedriver dummy frame'; ..."
}
В соответствии с состоянием WebDriver вы найдете список всех команд WebDriver и их текущую поддержку в ChromeDriver в зависимости от того, что указано в спецификации WebDriver. Как только реализация будет завершена по всем аспектам, PageLoadStrategy.EAGER будет обязательно присутствовать в Chrome Driver.
Вы используете только normal
или же none
как pageLoadStrategy
в chromdriver
, Так что либо выбирай none
и обрабатывать все самостоятельно или дождаться загрузки страницы, как это обычно происходит