Mat*_*ins 21 java parsing jsoup
我正在使用Jsoup库来读取URL.此网址包含几个<script>标记内的文字.我可以在每个<script>标签中获取文本吗?请注意,我并不是要求解析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());
}
Run Code Online (Sandbox Code Playgroud)
这是源代码中的一个脚本标记:
<script type="text/javascript">
(function() {
...
})();
</script>
Run Code Online (Sandbox Code Playgroud)
Ken*_*han 24
是.您可以使用Element#getElementsByTag()来获取所有script标记.每个脚本标记都将由DataNode表示.
Document doc =Jsoup.connect("http://stackoverflow.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("-------------------");
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*han 23
或者,您可以使用Element#html()返回元素的内部html 的方法.
从1.11.1开始:使用有效的Element#selectFirst()方法查找脚本元素.
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();
直到Jsoup 1.10.3:组合Element#select()并Elements#first()调用以查找脚本元素.
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());
}
Run Code Online (Sandbox Code Playgroud)