package net.oschina.app.util; import java.util.regex.Matcher; import java.util.regex.Pattern; public class HTMLUtil { private static final String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式 private static final String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式 private static final String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式 private final static String regxpForHtml = "<([^>]*)>"; // 过滤所有以<开头以>结尾的标签 public static String delHTMLTag(String htmlStr) { Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); Matcher m_script = p_script.matcher(htmlStr); htmlStr = m_script.replaceAll(""); // 过滤script标签 Pattern p_style = Pattern .compile(regEx_style, Pattern.CASE_INSENSITIVE); Matcher m_style = p_style.matcher(htmlStr); htmlStr = m_style.replaceAll(""); // 过滤style标签 Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); Matcher m_html = p_html.matcher(htmlStr); htmlStr = m_html.replaceAll(""); // 过滤html标签 return htmlStr.trim(); // 返回文本字符串 } /** * 基本功能:替换标记以正常显示 * @param input * @return String */ public static String replaceTag(String input) { if (!hasSpecialChars(input)) { return input; } StringBuffer filtered = new StringBuffer(input.length()); char c; for (int i = 0; i <= input.length() - 1; i++) { c = input.charAt(i); switch (c) { case '<': filtered.append("<"); break; case '>': filtered.append(">"); break; case '"': filtered.append("""); break; case '&': filtered.append("&"); break; default: filtered.append(c); } } return (filtered.toString()); } /** * 基本功能:判断标记是否存在 * @param input * @return boolean */ public static boolean hasSpecialChars(String input) { boolean flag = false; if ((input != null) && (input.length() > 0)) { char c; for (int i = 0; i <= input.length() - 1; i++) { c = input.charAt(i); switch (c) { case '>': flag = true; break; case '<': flag = true; break; case '"': flag = true; break; case '&': flag = true; break; } } } return flag; } /** * 基本功能:过滤所有以"<"开头以">"结尾的标签 * @param str * @return String */ public static String filterHtml(String str) { Pattern pattern = Pattern.compile(regxpForHtml); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); boolean result1 = matcher.find(); while (result1) { matcher.appendReplacement(sb, ""); result1 = matcher.find(); } matcher.appendTail(sb); return sb.toString(); } /** * 基本功能:过滤指定标签 * @param str * @param tag 指定标签 * @return String */ public static String fiterHtmlTag(String str, String tag) { String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>"; Pattern pattern = Pattern.compile(regxp); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); boolean result1 = matcher.find(); while (result1) { matcher.appendReplacement(sb, ""); result1 = matcher.find(); } matcher.appendTail(sb); return sb.toString(); } /** * 基本功能:替换指定的标签 * @param str * @param beforeTag 要替换的标签 * @param tagAttrib 要替换的标签属性值 * @param startTag 新标签开始标记 * @param endTag 新标签结束标记 * @return String * @如:替换img标签的src属性值为[img]属性值[/img] */ public static String replaceHtmlTag(String str, String beforeTag, String tagAttrib, String startTag, String endTag) { String regxpForTag = "<\\s*" + beforeTag + "\\s+([^>]*)\\s*>"; String regxpForTagAttrib = tagAttrib + "=\"([^\"]+)\""; Pattern patternForTag = Pattern.compile(regxpForTag); Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib); Matcher matcherForTag = patternForTag.matcher(str); StringBuffer sb = new StringBuffer(); boolean result = matcherForTag.find(); while (result) { StringBuffer sbreplace = new StringBuffer(); Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag .group(1)); if (matcherForAttrib.find()) { matcherForAttrib.appendReplacement(sbreplace, startTag + matcherForAttrib.group(1) + endTag); } matcherForTag.appendReplacement(sb, sbreplace.toString()); result = matcherForTag.find(); } matcherForTag.appendTail(sb); return sb.toString(); } }
相关推荐
9. **commons-lang-2.4.jar**:Apache Commons Lang是Java语言工具库,包含了一系列实用方法,扩展了Java的标准类库,如字符串处理、日期时间操作等,增强了HTMLUtil的功能。 10. **cssparser-0.9.5.jar**:...
而"使用htmlutil下载网页图片"很可能是相关的代码示例或教程,详细描述了如何使用这个包来实现图片的下载和保存。 在实际应用中,处理网页数据时还需要考虑一些其他因素,比如错误处理(如网络连接失败、服务器返回...
使用HTMLUtil或HTMLUnit时,开发者可以编写代码来定位页面元素(如通过ID、类名或XPath),然后模拟用户对这些元素的点击或者其他交互。这通常涉及到解析HTTP响应,创建DOM对象,然后使用类似于Selenium WebDriver的...
【标题】"excel转换html类(Excel2HtmlUtil的JAVA类)"所涉及的知识点主要集中在Java编程语言上,特别是如何使用Java处理Excel文件并将其转换为HTML格式。这个标题表明存在一个名为`Excel2HtmlUtil`的Java类,该类实现...
在本项目中,我们主要探讨如何使用Java编程语言,结合HtmlUtil和Jsoup库来爬取并解析知网上的中国专利数据。知网是中国最大的学术文献数据库,包含大量的专利信息,对于研究者和开发者来说,能够高效地获取这些数据...
html 工具类 * @param disrPath 生成html的存放路径 * @param fileName 生成html名字 * @return void 返回类型
最新版htmlutil,java无界面浏览器开发包
这两个类通过html的路径,将html提取为html内容的字符串,然后进行提取body里的内容,进行去除行间样式以及css等,然后还可以去除空行等,筛选出不需要的标签,当前类保留img标签,转换后可以自行设置img网络地址,...
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。...
这个库在自动化测试、网页抓取以及其他需要与网页交互的场景中非常有用。通过HTMLUnit,开发者可以编写程序来模拟用户在浏览器上的操作,如点击链接、填写表单、执行JavaScript等,而无需真正打开一个浏览器实例。...
在IT行业中,Java是一种广泛使用的编程语言,尤其在处理数据转换和Web应用方面。... 首先,Apache POI是Java的一个开源库,专门用于处理Microsoft Office格式的文件,如Excel(.xls和.xlsx)。它提供了一组API,使开发...
htmlunit java版无界面浏览器 实现网页自动登录利器 官方最新下载 htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源...
HTMLUnit是一个强大的Java库,它模拟了一个无头Web浏览器,主要用于自动化测试和网页抓取。... ...这对于创建自动化测试脚本或构建爬虫程序非常有用,因为它可以模拟用户与网页的交互,而无需真正打开浏览器。...
htmlunit是一款开源的java页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。这个没有界面的浏览器,运行速度也是非常迅速的。...
3. HTML 工具类:Hutool 的 HtmlUtil 工具类提供了 HTML 编码、解码、清除 HTML 标签、过滤 HTML 文本等功能,可以防止 XSS 攻击和 SQL 注入。 4. 定时任务:Hutool 的 CronUtil 工具类提供了定时任务的功能,支持 ...
6. **HTML源码解析**(HtmlUtil):HtmlUtil为解析和操作HTML文档提供了强大的工具,可以提取、修改网页元素,对于网页爬虫或自动化测试等场景尤其有用。 7. **图像处理**(ImageUtil):图像裁剪和缩放功能,使得...
msg)</p>`用于展示经过`HtmlUtil`对象处理后的`msg`对象的值。 2. **条件判断**:使用`#if($!obj)#else#end`进行条件判断。 - `($msg)> <script> alert('$!msg'); </script> #end>` 当`msg`对象存在时,显示警告框...
- `getterUtil`、`htmlUtil`、`httpUtil`、`imageToken`、`iteratorTool`、`listTool`、`localeUtil`、`mathTool`、`numberTool`、`paramUtil`、`portalUtil`、`portalprefsPropsUtil`、`propsUtil`、`...
- **HTTP客户端**:`HttpUtil`处理HTTP请求和响应,`HtmlUtil`解析HTML内容,`UserAgentUtil`生成和解析用户代理字符串。 - **定时任务**:`CronUtil`实现了基于Cron表达式的定时任务。 - **邮件工具**:`...