当前位置: 移动技术网 > IT编程>开发语言>Java > Java获取任意http网页源代码的方法

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

2019年07月19日  | 移动技术网IT编程  | 我要评论

孙四周,鬼伎回忆录 下载,欧美流行歌曲排行榜

本文实例讲述了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网