я бы настоятельно рекомендовал использовать менеджер веб-драйверов вместо того, чтобы настраивать двоичные файлы браузера самостоятельно.
для установки нового драйвера Chrome, я бы поместил такую функцию в мой код:
fun chrome(): WebDriver {
WebDriverManager.chromedriver().setup()
return ChromeDriver(chromeOptions())
}
теперь вы можете просто использовать эту функцию, которая будет возвращать ваш хром-драйвер, вот так:
val driver = chrome()
driver.get("www.google.com")
менеджер webdriver позаботится об автоматической установке двоичных файлов драйверов в зависимости от вашего текущегооперационная система.Для более сложного примера, который дает возможность динамически переключаться между различными настройками браузера или драйвера и полной настройкой селена, пожалуйста, посмотрите здесь
, потому что вы хотите очистить веб-сайт, я думаю,Chrome Headless Mode должен быть вашим выбором, потому что он более эффективен с точки зрения времени запуска браузера и т. д.
В общем, я бы рекомендовал использовать skrape {it} вместоселен, чтобы сделать работу (до тех пор, пока вам не нужно где-то нажимать).это библиотека, написанная на kotlin, которая была специально разработана для очистки веб-сайтов и поддерживает очистку веб-сайтов, отображаемых на JavaScript.Например, вы можете сделать что-то вроде этого, и все готово (не требуются дополнительные затраты селена):
val githubName = skrape {
url = "https://github.com/skrapeit"
mode = Mode.DOM
extract {
element(".h-card .p-nickname").text()
}
}
это также будет работать с более сложными данными, например:
data class MyScrapedData(
val userName: String,
val repositoryNames: List<String>
)
fun main() {
val githubUserData = skrape {
url = "https://github.com/skrapeit"
mode = Mode.DOM
extract {
MyScrapedData(
userName = element(".h-card .p-nickname").text(),
repositoryNames = elements("span.repo").map { it.text() }
)
}
}
println("${githubUserData.userName}'s repos are ${githubUserData.repositoryNames}")
}
дляполный пример того, как очистить веб-сайт на языке javascript с помощью skrape {it}, смотрите в соответствующем разделе docs