Como se titula, estoy tratando de leer el contenido de sitios como este , que parece estar basado en javascript.
Intenté usar jdk lib simple, luego jsoup y luego htmlunit , pero no pude obtener nada útil (solo veo el código fuente o solo el título o null ):
val url = URL("https://registry.terraform.io/providers/hashicorp/tls/latest/docs/data-sources/certificate") val connection = url.openConnection() val scanner = Scanner(connection.getInputStream()) scanner.useDelimiter("\\Z") val content = scanner.next() scanner.close() println(content) val doc = Jsoup.connect("https://registry.terraform.io/providers/hashicorp/tls/latest/docs/data-sources/certificate").get() println(doc.text()) WebClient().use { webClient -> val page = webClient.getPage<HtmlPage>("https://registry.terraform.io/providers/hashicorp/tls/latest/docs/data-sources/certificate") val pageAsText = page.asNormalizedText() println(pageAsText) } WebClient(BrowserVersion.FIREFOX).use { webClient -> val page = webClient.getPage<HtmlPage>("https://registry.terraform.io/providers/hashicorp/tls/latest/docs/data-sources/certificate") println(page.textContent) }Debería ser algo fácil, pero no puedo ver qué está mal.
Para que esto sea posible, necesita algo para ejecutar el JS que modifica el DOM.
Puede ser un poco exagerado según el caso de uso, y probablemente no sea posible si está en Android, pero una forma de hacerlo es iniciar un navegador sin cabeza por separado e interactuar con él desde su código. Por ejemplo, usando Chrome Headless y el Protocolo Chrome DevTools. Si está interesado, he escrito una biblioteca de Kotlin llamada chrome-devtools-kotlin para interactuar con un navegador Chrome de forma segura.
Sin embargo, puede haber opciones más simples. Por ejemplo, tal vez pueda ejecutar un navegador integrado en su lugar con JBrowserDriver y seguir usando JSoup para analizar el HTML, como se menciona en esta otra respuesta .