HTML解析实用库,非常好用 public class HtmlLinkParser { //获取子链接,url为网页url,filter是链接过滤器,返回该页面子链接的HashSet public static Set<String> extracLinks(String url, LinkFilter filter) { Set<String> links = new HashSet<String>(); try { Parser parser = new Parser(url); parser.setEncoding("utf-8"); // 过滤 <frame >标签的 filter,用来提取 frame 标签里的 src 属性所表示的链接 NodeFilter frameFilter = new NodeFilter() { public boolean accept(Node node) { if (node.getText().startsWith("frame src=")) { return true; } else { return false; } } }; // OrFilter 接受<a>标签或<frame>标签,注意NodeClassFilter()可用来过滤一类标签,linkTag对应<标签> OrFilter linkFilter = new OrFilter(new NodeClassFilter( LinkTag.class), frameFilter); // 得到所有经过过滤的标签,结果为NodeList NodeList list = parser.extractAllNodesThatMatch(linkFilter); for (int i = 0; i < list.size(); i++) { Node tag = list.elementAt(i); if (tag instanceof LinkTag)// <a> 标签 { LinkTag link = (LinkTag) tag; String linkUrl = link.getLink();// 调用getLink()方法得到<a>标签中的链接 if (filter.accept(linkUrl))//将符合filter过滤条件的链接加入链接表 links.add(linkUrl); } else{// <frame> 标签 // 提取 frame 里 src 属性的链接如 <frame src="test.html"/> String frame = tag.getText(); int start = frame.indexOf("src="); frame = frame.substring(start); int end = frame.indexOf(" "); if (end == -1) end = frame.indexOf(">"); String frameUrl = frame.substring(5, end - 1); if (filter.accept(frameUrl)) links.add(frameUrl); } } } catch (ParserException e) {//捕捉parser的异常 e.printStackTrace(); } return links; } }











































- 1


- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于微课的翻转课堂在中职计算机教学中的应用与创新.docx
- 电力系统潮流分析计算的MATLAB仿真周明亮01.doc
- 现场签证管理作业指引.doc
- 基于单片机的数控稳压电源毕业设计.doc
- 国家重点研发计划项目答辩评审表格.doc
- 中餐布草送洗程序及标准.pdf
- 小学数学深度学习的实践探索-(4).doc
- 基于Android的2048游戏的设计与实现.doc
- 基于matlab的IIR滤波器的设计文献综述.doc
- 2003沉积学原理试题及答案.doc
- 三菱PLC的三层电梯控制系统设计.docx
- 基于BP神经网络数学算法的智能照明控制应用.docx
- 电力建设工程质量通病典型缺陷防治.doc
- 信息化教学背景下高职教学管理的现状及对策.docx
- d1200-32离心鼓风机试车方案.doc
- 30m预应力工字梁安装方案.doc


