Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-使用Jsoup获取脚本标记中的文本_Java_Parsing_Jsoup - Fatal编程技术网

Java-使用Jsoup获取脚本标记中的文本

Java-使用Jsoup获取脚本标记中的文本,java,parsing,jsoup,Java,Parsing,Jsoup,我正在使用Jsoup库读取URL。此url在几个标记中包含文本。我是否可以获取每个标记中的文本?请注意,我不是要求解析Javascript文件,因为我已经知道JSoup不允许这样做。URL的实际源代码在脚本标记中包含文本,我需要它 doc = Jsoup.connect("http://www.example.com").timeout(10000).get(); Element div = doc.select("script").first(); for (Element element

我正在使用Jsoup库读取URL。此url在几个
标记中包含文本。我是否可以获取每个
标记中的文本?请注意,我不是要求解析Javascript文件,因为我已经知道JSoup不允许这样做。URL的实际源代码在脚本标记中包含文本,我需要它

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());
}
这是源代码中一个脚本标记的外观:

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

(功能(){
...
})();
是。您可以使用获取所有
脚本
标记。每个脚本标记将由表示


或者,可以使用返回元素内部html的方法

自1.11.1以来:使用有效的方法查找脚本元素


根据您的情况,解决方案如下

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

谢谢@KenChan,它工作得很好,我正在使用
String scriptdata=node.getWholeData()但作为页面上的第二个脚本?尽管此代码可能会回答问题,但提供关于为什么和/或如何回答问题的附加上下文将显著提高其长期价值。请在您的回答中添加一些解释。
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();
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();
Document doc = Jsoup.parse(html);
Elements scripts = doc.getElementsByTag("script");
for (Element script : scripts) {
    System.out.println(script.data());
}
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;
    }
}