欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java获取任意http网页源代码的方法

程序员文章站 2024-03-02 23:18:16
本文实例讲述了java获取任意http网页源代码。分享给大家供大家参考,具体如下: java获取任意http网页源代码可实现如下功能: 1. 获取任意http网页的代码...

本文实例讲述了java获取任意http网页源代码。分享给大家供大家参考,具体如下:

java获取任意http网页源代码可实现如下功能:

1. 获取任意http网页的代码
2. 获取任意http网页去掉html标签的代码

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[^>]*?>[\\s\\s]*?<\\/script>"; // 定义script的正则表达式
    final string regex_style = "<style[^>]*?>[\\s\\s]*?<\\/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程序设计有所帮助。