Java获取任意http网页源代码的方法
发布时间:2020-12-14 22:25:54 所属栏目:Java 来源:网络整理
导读:本篇章节讲解JAVA获取任意http网页源代码。供大家参考研究具体如下: JAVA获取任意http网页源代码可实现如下功能: 1. 获取任意http网页的代码 2. 获取任意http网页去掉HTML标签的代码 Webpage类: /** * 网页操作相关类 */package test;import ja
本篇章节讲解JAVA获取任意http网页源代码。分享给大家供大家参考,具体如下: JAVA获取任意http网页源代码可实现如下功能: 1. 获取任意http网页的代码 Webpage类: /** * 网页操作相关类 */ package test; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author winddack * */ public class Webpage { private String pageUrl;//定义需要操作的网页地址 private String pageEncode="UTF8";//定义需要操作的网页的编码 public String getPageUrl() { return pageUrl; } public void setPageUrl(String pageUrl) { this.pageUrl = pageUrl; } public String getPageEncode() { return pageEncode; } public void setPageEncode(String pageEncode) { this.pageEncode = pageEncode; } //定义取源码的方法 public String getPageSource() { StringBuffer sb = new StringBuffer(); try { //构建一URL对象 URL url = new URL(pageUrl); //使用openStream得到一输入流并由此构造一个BufferedReader对象 BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(),pageEncode)); String line; //读取www资源 while ((line = in.readLine()) != null) { sb.append(line); } in.close(); } catch (Exception ex) { System.err.println(ex); } return sb.toString(); } //定义一个把HTML标签删除过的源码的方法 public String getPageSourceWithoutHtml() { final String regEx_script = "<script[^>]*?>[sS]*?</script>"; // 定义script的正则表达式 final String regEx_style = "<style[^>]*?>[sS]*?</style>"; // 定义style的正则表达式 final String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式 final String regEx_space = "s*|t|r|n";//定义空格回车换行符 String htmlStr = getPageSource();//获取未处理过的源码 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标签 Pattern p_space = Pattern.compile(regEx_space,Pattern.CASE_INSENSITIVE); Matcher m_space = p_space.matcher(htmlStr); htmlStr = m_space.replaceAll(""); // 过滤空格回车标签 htmlStr = htmlStr.trim(); // 返回文本字符串 htmlStr = htmlStr.replaceAll(" ",""); htmlStr = htmlStr.substring(0,htmlStr.indexOf("。")+1); return htmlStr; } } 调用: Webpage page=new Webpage(); page.setPageUrl("http://www.baidu.com"); String code=page.getPageSourceWithoutHtml(); System.out.println(code); PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用: JavaScript正则表达式在线测试工具: 正则表达式在线生成工具: 更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》 希望本文所述对大家java程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |