HtmlParser例程和实例结果

 

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>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值