`
runfriends
  • 浏览: 226400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java解析html

阅读更多

由于项目需要得到html内的所有js代码,就想应该有解析html的java库。

然后就找到了jsoup

它操作html相当方便,拥有类似jquery选择器的语法,可以方便的访问html dom。

下面是一个简单示例,能够从指定html文件中提取js

/**
	 * @param html 提取单个html文件内嵌和引用的全部js
	 *             如果有多个script包含内嵌js,程序会首先把这些js源码连接成一个字符串以html绝对路径为key保存到返回值
	 *             引用的js文件源码,以js绝对路径为key,源码为值保存到返回结果
	 * */
	public static Map<String,String> extractJsFromHtml(File html) throws MalformedURLException, IOException {
		PrintWriter pw=null;
		try{
			CodeDetectUtil.initCodeDetector();
			Document htmldoc=DataUtil.load(html, CodeDetectUtil.detectCharset(html), html.toURI().getPath());
			Elements scripts=htmldoc.select("script");
			Map<String,String> jscode=new HashMap<String,String>();
			StringWriter sw=new StringWriter();
			pw=new PrintWriter(sw);
			for(Element script : scripts){
				String type=script.attr("type");
				String language=script.attr("language");
				if((Help.isEmpty(type) || type.equals("text/javascript")) && 
				   (Help.isEmpty(language) || language.equals("javascript"))){
					String src=script.attr("src");
					if(Help.isEmpty(src)){
						pw.println(script.html().trim());
					}else{
						File jsfile=null;
						if(src.startsWith(JsChecker.uriPrefix)){
							jsfile=new File(Help.isEmpty(webappPath)?html.getParent():webappPath,src.substring(JsChecker.uriPrefix.length()));
						}else{
							jsfile=new File(html.getParentFile(),src);
						}
						jscode.put(jsfile.getAbsolutePath(),FileUtil.loadTxt(jsfile, CodeDetectUtil.detectCharset(jsfile)));
					}
				}
			}
			pw.flush();
			jscode.put(html.getAbsolutePath(),sw.toString());
			return jscode;
		}finally{
			CodeDetectUtil.endCodeDetector();
		}
	}
 
分享到:
评论
4 楼 firefox_hit 2013-06-14  
有些迷惑的地方啊,求LZ解惑,多谢多谢!

1. 这个开源项目主要是用来做什么的呢?
2. JOR和ROA分别实现了那些功能呢?
3. 有的URL需要解析Javascript脚本进行生成,不知道此项目是否已经实现?在哪几个包中涉及了呢?
4. 为什么我Import项目JOR和ROA之后,报错了呢?还需要搭建环境,或者引入一些Jar包么?

多谢LZ解惑,多谢多谢~
3 楼 firefox_hit 2013-06-13  
太感谢了!
2 楼 runfriends 2013-06-13  
这个项目不是我实现的。它是sourceforge上的开源项目
JsChecker和Help是我自己实现的,你上github找javaonrails,所有源码都在里面。
firefox_hit 写道
您好,请问可以学习这个项目的源码么?
不过是保密的,那么是否可以学习下这个类中涉及的Help和JsChecker等相关类的实现呢?
十分感谢!
我的邮箱:firefox_hit@126.com

好人一生平安!(有点求种的感觉呢……哈哈~)

谢谢谢谢!

1 楼 firefox_hit 2013-06-13  
您好,请问可以学习这个项目的源码么?
不过是保密的,那么是否可以学习下这个类中涉及的Help和JsChecker等相关类的实现呢?
十分感谢!
我的邮箱:firefox_hit@126.com

好人一生平安!(有点求种的感觉呢……哈哈~)

谢谢谢谢!

相关推荐

Global site tag (gtag.js) - Google Analytics