如何获取HTML中所有脚本的内容

时间:2013-05-03 12:23:42

标签: java html-parsing script-tag

我正在制作一个Java程序,它涉及从网页中提取标签。对于解析,我使用Jsoup,它运行正常。但是下载页面中的标签数量存在一些问题。 我有4个文件: -

  1. goog1.htm(我通过浏览器从https://www.google.co.in保存)
  2. goog2.html(我使用命令'wget https://www.google.co.in'下载)
  3. goog3.html(我使用BufferedReader& InputStreamReader通过我的Java程序下载)
  4. goog4.html(我从'view-source:https://www.google.co.in/'中复制整个代码得到的结果)
  5. 当我搜索字符串“< script />”时在这4个文件中,都给出了不同的结果。

    • goog1.htm - 16次
    • goog2.html - 5次
    • goog3.html - 5次
    • goog4.html - 10次

    造成这种差异的原因是什么?如何从页面获取所有脚本标记?

    我应该使用哪个文件来测试我的程序?

    提前致谢...

1 个答案:

答案 0 :(得分:1)

1)script代码数量不同的原因是script页面中可以定义多个HTML代码。

2)页面中的所有脚本标记都已加载,并且它们将在运行。如果您想测试所有脚本代码,则需要对所有脚本代码进行测试。这取决于您的测试范围。

3)如果您将内容作为文本处理到JAVA程序中,则可以通过使用子字符串方法解析来获取所有脚本标记内容。但我建议使用Apache commons StringUtils类来执行此操作。

import org.apache.commons.lang.StringUtils;

public class scriptContentRetriever{

public static void main(String[] args) {
        String yourScriptContent = "<script>This is Script 1 Content</script><script>This is Script 2 Content</script>";
        String[] scriptStrings = StringUtils.substringsBetween(yourScriptContent, "<script>", "</script>");
        for (String scriptString : scriptStrings) {
            //Do what ever you want with the script content right here.
            System.out.println(scriptString);
        }
    }

}