htmlparser获取循环节点内容和单个标签内容的方法

htmlparser接口可用于提取分析html页面的内容。
本文只简单说明下如何利用htmlparser获取某个节点标签的内容,和获取循环节点的列表内容的个人总结。其它操作方法,因网上已经有很多相关的帮助文档,在此不再重复说明。

大致思路:
1:定义org.htmlparser.filters的类型,确定需要获取的标签或内容范围。常用的HMLT filter类型有:AndFilter、HasAttributeFilter、HasChildFilter、HasParentFilter、LinkStringFilter、NotFilter、OrFilter、TagNameFilter等类型。
为了更好定位所需要查找的页面内容,可以用多个Filter进行组合定位,如:AndFilter andFilter = new AndFilter(tagFilter,hasChildFilter);

2:通过NodeList list = parser.extractAllNodesThatMatch(andFilter);获取满足条件的节点列表。

3:对列表list进行循环遍历,在各个遍历里面,可以获取分析多个不同节点的内容,如获取某循环节点的内容和链接:
for(int i=0;i html = list.elementAt(i).toHtml();
// 获取内容
TagNameFilter pFilter = new TagNameFilter(\"p\");
HasAttributeFilter pAttributeFilter = new HasAttributeFilter(\"class\",\"sms\");
AndFilter pAndFilter = new AndFilter(pFilter,pAttributeFilter);
pParser = Parser.createParser(html, charset);
pList = pParser.extractAllNodesThatMatch(pAndFilter);
System.out.println(\"content:\"+pList.elements().nextNode().toPlainTextString());

// 获取连接
TagNameFilter aFilter = new TagNameFilter(\"a\");
HasChildFilter aChildFilter = new HasChildFilter(new TagNameFilter(\"strong\"));
AndFilter aAndFilter = new AndFilter(aFilter,aChildFilter);
pParser.reset();
pList = pParser.extractAllNodesThatMatch(aAndFilter);
// System.out.println(\"url:\"+pList.elements().nextNode().toHtml());
LinkTag linkTag = (LinkTag)pList.elements().nextNode();
System.out.println(\"url's link:\"+linkTag.getLink());
System.out.println(\"url's content:\"+linkTag.getLinkText());
}
至此,循环列表的内容,已经能全部获取到。
4:针对各种HMLT标签,htmlparser提供了各类标签的接口,为各类标签提供了各自个性化的方法,以便开发者更好更方便的调用。
举例如下:
如果想对某链接标签www.xxx.com\" class=\"xxx\">进行内容的提取,可以通过正则表达式或字符串处理来获取到自己想要的内容。但更方便的,可以通过各种相应的xxxTag接口进行处理。如:LinkTag linkTag = (LinkTag)pList.elements().nextNode();
System.out.println(\"url's link:\"+linkTag.getLink());
System.out.println(\"url's content:\"+linkTag.getLinkText();

5:具体htmlparser的API,参见官方文档:http://htmlparser.sourceforge.net/javadoc/

6:以上只是个人使用htmlparser的一个小小总结,欢迎交流。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值