由于项目需要得到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();
}
}
分享到:
相关推荐
在这个场景下,我们讨论的是如何利用Java解析HTML以获取特定标签路径下的内容,例如`html/body/div/div/`。 首先,我们需要一个强大的库来解析HTML,如Jsoup。Jsoup是一个用于处理实际世界HTML的Java库,它提供了一...
总之,Java解析HTML抓取网站数据采集是一项涉及网络通信、HTML解析、数据处理等多个技术领域的任务。通过熟练掌握相关工具和技巧,我们可以高效地从互联网获取大量有价值的信息。在实践中,务必遵循合法、合规的原则...
HTMLParser是一个Java库,专为解析HTML而设计。它提供了对HTML文档的解析能力,使得开发者可以方便地处理网页内容,提取有用的信息或者进行数据抓取。这个工具在IT行业中,尤其是在Web开发和数据处理领域,有着广泛...
在IT行业中,HTML(HyperText Markup Language)是用于创建网页的标准标记语言,而Java作为一种强大的后端编程语言,经常被用来处理和解析HTML文档。在Java中解析HTML时,一个常用的库是NekoHTML,它是一个开源项目...
解析HTML文档 JSoup能够解析来自网络或本地文件系统的HTML文档,将其转化为一个可操作的`org.jsoup.nodes.Document`对象。这个对象就像一个完整的DOM树,你可以通过这个树来遍历和修改HTML结构。 ```java import ...
在这个"Java中解析html的开源项目04"部分,我们将深入探讨HTMLParser库的功能、用法以及如何在实际项目中应用。 HTMLParser库主要由Java编写,它能够解析HTML文档并将其转换为易于操作的结构,如DOM树或事件驱动的...
纯Java写的html解析类,解析为自上而下顺序解析。解析效率一般,不支持js,可以满足日常使用。
Java解析CHM文件是将Microsoft的 Compiled HTML Help (CHM) 文件转换成HTML网页的过程。CHM文件是一种常见的帮助文档格式,它包含了多个HTML页面、图像和其他资源,并使用了一种特殊的压缩方法存储。在Java中处理CHM...
java的 html解析工具,使用时直接将包添加到工程即可
如何在Java程序中利用正则表达式实现对字符串的解析.另外,HTMLParser是一款很强大的对HTML网页进行解析的工具,其中大量地用到正则表达式.
【标题】:“java解析DWG文件为json使用superMap” 【描述】:“java使用superMap解析DWG文件为json输出,本地通过,附件中为word操方式按照步骤可以导入数据集” 【标签】:“java解析DWG文件json java读取dwg...
1. **DOMFragmentParser**:这是一个自定义的解析器类,用于解析HTML片段并构建DOM树。 2. **IOUtils**:Apache Commons IO库提供了一系列处理输入/输出流的方法,便于文件读写操作。 3. **Quoted-Printable解码**:...
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
4. **使用Java解析HTML的优点**:Java作为一种跨平台的语言,有着丰富的库支持和强大的社区。使用Java编写HTML解析器可以确保代码的可移植性,并且能够利用Java的异常处理机制,提高程序的健壮性。 5. **实例开发**...
总之,通过使用Jsoup,我们可以轻松地解析HTML文档,找到所有的图片链接,并使用Java的网络和文件I/O功能将它们下载到本地。这个项目不仅可以作为学习Java网络编程和HTML解析的实践,还可以应用于各种实际场景,例如...
Java解析模块会将这些内容解压、提取,并可能进行进一步的处理,如图像的重命名和移动,以适应不同的设备和阅读环境。 在FBreader的优化版本中,可能包括了性能提升、内存管理优化、错误修复或新特性添加。例如,...
### 使用Java编程解析HTML文档 #### 一、引言 随着互联网的发展,解析HTML文档的需求日益增加。无论是搜索引擎还是各种在线应用,都需要高效地提取HTML文档中的信息。Java作为一种广泛使用的编程语言,提供了多种...
Java解析CHM(Compiled Help Manual)文件是一种技术,主要用于处理微软Windows系统中常见的帮助文档格式。CHM文件是由HTML页面和其他资源压缩而成的,通常包含索引、目录和搜索功能。`chm4j`是一个Java库,专门设计...
java实现对html解析,实现通过id,class等tag进行解析。