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&aacute;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&oacute;n. Bajo el tema &ldquo;La Importancia del cielo oscuro&rdquo;, las fotos galardonadas este a&ntilde;o son aquellas que mejor transmiten la belleza de un cielo estrellado y el problema de la contaminaci&oacute;n lum&iacute;nica. Como recuerdan los organizadores, hoy d&iacute;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&iacute;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&aacute;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&oacute;n. Bajo el tema “La Importancia del cielo oscuro”, las fotos galardonadas este a&ntilde;o son aquellas que mejor transmiten la belleza de un cielo estrellado y el problema de la contaminaci&oacute;n lum&iacute;nica. Como recuerdan los organizadores, hoy d&iacute;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&iacute;a &quot;Belleza del Cielo Nocturno&quot;.</p>
   <p></p>
  </body>
 </html>

Fiz algo de errado?

Foi útil?

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&aacute;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&oacute;n. Bajo el tema &ldquo;La Importancia del cielo oscuro&rdquo;, las fotos galardonadas este a&ntilde;o son aquellas que mejor transmiten la belleza de un cielo estrellado y el problema de la contaminaci&oacute;n lum&iacute;nica. Como recuerdan los organizadores, hoy d&iacute;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&iacute;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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top