Htmlparser

本文介绍了一个纯Java编写的HTML解析库HTMLParser,该库能够高效地解析HTML文档并提取链接等信息。文中提供了多种访问HTML节点的方式,包括使用Visitor模式、Filter过滤器以及通过org.htmlparser.beans提供的封装方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

htmlparser
  htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或
  提取html。它能超高速解析html,而且不会出错。
  毫不夸张地说,htmlparser就是目前最好的html解析和分析的工具。
  无论你是想抓取网页数据还是改造html的内容,用了htmlparser绝对会忍不住称赞。


取得一段html代码里面所有的链接C#版本,java版本类似:
  string htmlcode = "<HTML><HEAD><TITLE>AAA</TITLE></HEAD><BODY>" + ...... + "</BODY></HTML>";
  Parser parser = Parser.CreateParser(htmlcode, "GBK");
  HtmlPage page = new HtmlPage(parser);
  try
  { parser.VisitAllNodesWith(page);}
  catch (ParserException e1)
  { e1 = null;}
  NodeList nodelist = page.Body;
  NodeFilter filter = new TagNameFilter("A");
  nodelist = nodelist.ExtractAllNodesThatMatch(filter, true);
  for (int i = 0; i < nodelist.Size(); i++)
  {
  LinkTag link=(LinkTag) nodelist.ElementAt(i);
  System.Console.Write(link.GetAttribute("href") + "\n");
  }

有效的链接:http://www.yeeach.com/2008/05/19/htmlparser%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/


主要是如下几种方式

采用Visitor方式访问Html
try {
Parser parser = new Parser();
parser.setURL(”http://www.google.com”);
parser.setEncoding(parser.getEncoding());
NodeVisitor visitor = new NodeVisitor() {
public void visitTag(Tag tag) {
logger.fatal(”testVisitorAll() Tag name is :”
+ tag.getTagName() + ” \n Class is :”
+ tag.getClass());
}

};

parser.visitAllNodesWith(visitor);
} catch (ParserException e) {
e.printStackTrace();
}

采用Filter方式访问html
try {

NodeFilter filter = new NodeClassFilter(LinkTag.class);
Parser parser = new Parser();
parser.setURL(”http://www.google.com”);
parser.setEncoding(parser.getEncoding());
NodeList list = parser.extractAllNodesThatMatch(filter);
for (int i = 0; i < list.size(); i++) {
LinkTag node = (LinkTag) list.elementAt(i);
logger.fatal(”testLinkTag() Link is :” + node.extractLink());
}
} catch (Exception e) {
e.printStackTrace();
}

采用org.htmlparser.beans方式
另外htmlparser 还在org.htmlparser.beans中对一些常用的方法进行了封装,以简化操作,例如:

Parser parser = new Parser();

LinkBean linkBean = new LinkBean();
linkBean.setURL(”http://www.google.com”);
URL[] urls = linkBean.getLinks();

for (int i = 0; i < urls.length; i++) {
URL url = urls[i];
logger.fatal(”testLinkBean() -url is :” + url);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值