0

我正在尝试解析网页,但是当我想在页面中获取一段文本时。当我调用 Jsoup.parse() 和 Jsoup.connect().get() 方法时,Jsoup 给我一个错误的文档。

这是网页和我的代码的一部分。doc var 有一个错误的 DOM。

 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();

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>

我做错什么了吗?

4

1 回答 1

0

如果您指的是 <html> 和 <body> 标记,那只是 Jsoup 将您的片段包装在适当文档的外壳中。

但是,您的起始 XML:

<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>

包含嵌套的 <p> 元素 - 这不是有效的 HTML,JSoup 会为您修复它。这里详细解释了嵌套段落- 简而言之 - 它们是自动关闭的,导致您的 DOM 与您的预期不同。

Consider converting the outer <p> into a <span> and you should be fine.

于 2012-05-22T11:43:05.417 回答