StingBean用法实例:
StringBean sb = new StringBean ();
sb.setLinks (false); // 是否显示web页面的连接(Links)
sb.setReplaceNonBreakingSpaces (true);//去掉不规范的空格
sb.setCollapse (true);// 如果是true的话把一系列空白字符用一个字符替代.
// 为了取得页面的整洁美观一般设置上面两项为true , 如果要保持页面的原有格式, 如代码页面的空格缩进 可以设置为false
sb.setURL ("http://www.netbeans.org"); // the HTTP is performed here
String s = sb.getStrings ();
// 使用 ObjectFindingVisitor 配合不同的 Tag.class 分析网页
try
{
ImageTag imgLink;
ObjectFindingVisitor visitor = new ObjectFindingVisitor(ImageTag.class);
Parser parser = new Parser();
parser.setURL(url);
parser.setEncoding(parser.getEncoding());
parser.visitAllNodesWith(visitor);
Node[] nodes = visitor.getTags();
for (int i = 0; i < nodes.length; i++)
{
// ImageTag
imgLink = (ImageTag) nodes[i];
// ImageURL
System.out.println("ImageURL = " + imgLink.getImageURL());
// "/webinclude/zh-tw/images/msn.gif" => ImageLocation
System.out.println("ImageLocation = " + imgLink.extractImageLocn());
// SRC value
System.out.println("SRC = " + imgLink.getAttribute("SRC"));
}
}
catch (Exception e)
{
e.printStackTrace();
}
// 使用不同的 NodeFilter 分析网页
try
{
NodeFilter filter = new TagNameFilter("IMG");
NodeFilter filter1 = new NodeClassFilter(ImageTag.class);
Parser parser = new Parser();
parser.setURL(url);
parser.setEncoding(parser.getEncoding());
NodeList list = parser.extractAllNodesThatMatch(filter);
for (int i = 0; i < list.size(); i++)
{
System.out.println(list.elementAt(i).toHtml());
}
}
catch (Exception e)
{
e.printStackTrace();
}
/
**
* 补全html文件中的标签
* @param str
* @return
*/
public static String formathtml(String str) {
String htmlstr = null;
htmlstr = "<html>" + "<div>" + str + "</html>";
System.out.println(htmlstr);
Parser parser = null;
try {
parser = new Parser(htmlstr);
// parser.setEncoding("GBK");
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ObjectFindingVisitor visitor = new ObjectFindingVisitor(Div.class);
try {
parser.visitAllNodesWith(visitor);
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Node[] nodes = visitor.getTags();
// System.out.println(((Div)nodes[0]).toHtml());
return ((Div) nodes[0]).toHtml();
}
处理前:
<html> <div><P>接下来我们要介绍的就是使用 JAVA 语言如何简单快速的攫取 HTML 中包含的数据。我们会借助一些现有的成熟 API
来完成这件事,因为如果仅仅是为了实现这个功能,完全没有必要自己去实现 HTML 的语法分析器。我们引入了一个开源的项目-- HTML
Parser ,这是一个在 SourceForge.net 上比较活跃的项目之一,目前的最新版本是 1.4 发行版。有如 HTML
Parser 网站的自我介绍: HTML Parser 是一个对现有的 HTML
进行分析的快速实时的解析器,事实上在应用过程中你更为惊叹于 HTML Parser 给你带来一些周到的处理。 </P>
<P>考虑到很多读者并不清楚该项目的应用场合,因此我依照以前的步骤来组织这篇文章。首先是提出问题,讲述我在怎么一种情况下需要对 HTML
进行语法解析;其次是分析问题,如何考虑到使用 HTML Parser 来达到我所需要的目的;最后就是解决问题。 </P>
<P><A name=1><SPAN class=atitle>提出问题</A></P>
<P>在实际开发一个内容管理项目时,由于内容是基于 HTML 的格式进行存储以及编写,并提供了一个基于浏览器的所见即所得的 HTML
编辑器。用户经常会直接从其他网站上复制一些带格式的内容后直接发布,首页会显示这些内容的概要信息,概要信息直接切割内容,从中读取前几个字。这种做法引发的问题是,截断的内容包含不完整的格式信息,因为切割的长度是固定的,比如我取前
400 </html>
处理后:
<div><P>接下来我们要介绍的就是使用 JAVA 语言如何简单快速的攫取 HTML 中包含的数据。我们会借助一些现有的成熟 API
来完成这件事,因为如果仅仅是为了实现这个功能,完全没有必要自己去实现 HTML 的语法分析器。我们引入了一个开源的项目-- HTML
Parser ,这是一个在 SourceForge.net 上比较活跃的项目之一,目前的最新版本是 1.4 发行版。有如 HTML
Parser 网站的自我介绍: HTML Parser 是一个对现有的 HTML
进行分析的快速实时的解析器,事实上在应用过程中你更为惊叹于 HTML Parser 给你带来一些周到的处理。 </P>
<P>考虑到很多读者并不清楚该项目的应用场合,因此我依照以前的步骤来组织这篇文章。首先是提出问题,讲述我在怎么一种情况下需要对 HTML
进行语法解析;其次是分析问题,如何考虑到使用 HTML Parser 来达到我所需要的目的;最后就是解决问题。 </P>
<P><A name=1><SPAN class=atitle>提出问题</SPAN></A></P>
<P>在实际开发一个内容管理项目时,由于内容是基于 HTML 的格式进行存储以及编写,并提供了一个基于浏览器的所见即所得的 HTML
编辑器。用户经常会直接从其他网站上复制一些带格式的内容后直接发布,首页会显示这些内容的概要信息,概要信息直接切割内容,从中读取前几个字。这种做法引发的问题是,截断的内容包含不完整的格式信息,因为切割的长度是固定的,比如我取前
400 </P></div>