这篇文章主要介绍了java获取任意http网页源代码的方法,可实现获取网页代码以及去除html标签的代码功能,涉及java正则操作相关实现技巧,需要的朋友可以参考下
本文实例讲述了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);
以上就是java获取任意http网页源代码的方法分享的详细内容。