Por que o JSoup analisa errado meu código HTML?
-
13-12-2019 - |
Pergunta
Estou tentando analisar uma página da web, mas quando quero obter um trecho de texto na página.Jsoup me dá um documento errado quando chamo os métodos Jsoup.parse() e Jsoup.connect().get().
Este é um pedaço da página da web e do meu código.O doc var tem um DOM errado.
Document doc1 = Jsoup.parse("<p class=\"texto\"><p>El concurso fotográfico internacional <em>Earth and Sky Photo Contest</em> ya tiene <a href=\"http://www.twanight.org/newTWAN/index.asp\" target=\"_blank\">ganadores</a> en su tercera edición. Bajo el tema “La Importancia del cielo oscuro”, las fotos galardonadas este año son aquellas que mejor transmiten la belleza de un cielo estrellado y el problema de la contaminación lumínica. Como recuerdan los organizadores, hoy día el exceso de luz artificial en las ciudades hace que las estrellas desaparezcan del cielo urbano. Esta foto del cometa Lovejoy sobre Australia, de Jia Hao, se hizo con el primer premio en la categoría \"Belleza del Cielo Nocturno\".</p></p>");
String summary = doc1.select("p.texto p").text();
O resultado da variável doc1 é:
<html>
<head></head>
<body>
<p class="texto"></p>
<p>El concurso fotográfico internacional <em>Earth and Sky Photo Contest</em> ya tiene <a href="http://www.twanight.org/newTWAN/index.asp" target="_blank">ganadores</a> en su tercera edición. Bajo el tema “La Importancia del cielo oscuro”, las fotos galardonadas este año son aquellas que mejor transmiten la belleza de un cielo estrellado y el problema de la contaminación lumínica. Como recuerdan los organizadores, hoy día el exceso de luz artificial en las ciudades hace que las estrellas desaparezcan del cielo urbano. Esta foto del cometa Lovejoy sobre Australia, de Jia Hao, se hizo con el primer premio en la categoría "Belleza del Cielo Nocturno".</p>
<p></p>
</body>
</html>
Fiz algo de errado?
Solução
Se você está se referindo às tags <html> e <body> isso é apenas Jsoup envolvendo seu fragmento dentro do shell de um documento adequado.
Seu XML inicial, no entanto:
<p class="texto">
<p>
El concurso fotográfico internacional <em>Earth and Sky Photo Contest</em> ya tiene <a href="http://www.twanight.org/newTWAN/index.asp" target="_blank">ganadores</a> en su tercera edición. Bajo el tema “La Importancia del cielo oscuro”, las fotos galardonadas este año son aquellas que mejor transmiten la belleza de un cielo estrellado y el problema de la contaminación lumínica. Como recuerdan los organizadores, hoy día el exceso de luz artificial en las ciudades hace que las estrellas desaparezcan del cielo urbano. Esta foto del cometa Lovejoy sobre Australia, de Jia Hao, se hizo con el primer premio en la categoría "Belleza del Cielo Nocturno".
</p>
</p>
contém aninhado Elementos <p> - isso é não HTML e JSoup válidos irão consertar isso para você.O aninhamento de parágrafos é explicado em detalhes aqui - em resumo - eles são fechados automaticamente, fazendo com que seu DOM seja diferente do que você esperava.
Considere converter o <p> externo em um <span> e você ficará bem.