with tutorial studio example div content attribute java parsing jsoup

tutorial - Java-Obtener texto dentro de la etiqueta de script usando Jsoup



jsoup select (4)

Estoy usando la biblioteca de Jsoup para leer una URL. Esta URL tiene texto dentro de unas pocas etiquetas <script> . ¿Es posible que obtenga el texto dentro de cada etiqueta <script> ? Tenga en cuenta que no estoy pidiendo analizar un archivo de Javascript, ya que ya sé que JSoup no permite eso. El código fuente real de la URL tiene texto dentro de una etiqueta de script, lo necesito.

doc = Jsoup.connect("http://www.example.com").timeout(10000).get(); Element div = doc.select("script").first(); for (Element element : div.children()) { System.out.println(element.toString()); }

Así es como se ve una de las etiquetas de script desde el código fuente:

<script type="text/javascript"> (function() { ... })(); </script>


Alternativamente, podría usar el método Element#html() que devuelve el html interno de un elemento.

Desde 1.11.1 : Use el método eficiente Element#selectFirst() para encontrar el elemento de script.

Document doc = Jsoup.connect("http://www.example.com").timeout(10000).get(); Element scriptElement = doc.selectFirst("script"); // Don''t forget to check scriptElement is not null... String jsCode = scriptElement.html();

Hasta Jsoup 1.10.3 : Combine Element#select() y Elements#first() calls para encontrar el elemento de script.

Document doc = Jsoup.connect("http://www.example.com").timeout(10000).get(); Element scriptElement = doc.select("script").first(); // Don''t forget to check scriptElement is not null... String jsCode = scriptElement.html();


Sí. Puede usar Element#getElementsByTag() para obtener toda la etiqueta de script . Cada etiqueta de script será representada por el DataNode .

Document doc =Jsoup.connect("http://.com/questions/16780517/java-obtain-text-within-script-tag-using-jsoup").timeout(10000).get(); Elements scriptElements = doc.getElementsByTag("script"); for (Element element :scriptElements ){ for (DataNode node : element.dataNodes()) { System.out.println(node.getWholeData()); } System.out.println("-------------------"); }


Según su caso, la solución será la siguiente.

Document doc = Jsoup.connect("http://www.example.com").timeout(10000).get(); Elements scripts = doc.select("script"); for (Element script : scripts) { String type = script.attr("type"); if (type.contentEquals("text/javascript")) { String scriptData = script.data(); // your text from the script break } }


Document doc = Jsoup.parse(html); Elements scripts = doc.getElementsByTag("script"); for (Element script : scripts) { System.out.println(script.data()); }