从一个页面出发获取指定关键字

package IBMSpider;

import java.text.ParseException;

import org.htmlparser.*;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.util.SimpleNodeIterator;

/*
 * 这个类是用来解析Parse网页的,之前练习的都是下载页面的
 * 
 * */
public class testParser {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		extractKeyWordText("http://www.cb.cityu.edu.hk/is/people/academic/","Liao");
	}

	// 循环访问所有节点,输出包含关键字的值节点
		public static void extractKeyWordText(String url, String keyword) {
			try {
	            //生成一个解析器对象,用网页的 url 作为参数
				Parser parser = new Parser(url);
				//设置网页的编码,这里只是请求了一个 gb2312 编码网页
				parser.setEncoding("utf-8");
				//迭代所有节点, null 表示不使用 NodeFilter
				NodeList list = parser.parse(null);
	            //从初始的节点列表跌倒所有的节点
				processNodeList(list, keyword);
			} catch (ParserException e) {
				e.printStackTrace();
			}
		}

		private static void processNodeList(NodeList list, String keyword) {
			//迭代开始
			SimpleNodeIterator iterator = list.elements();
			while (iterator.hasMoreNodes()) {
				Node node = iterator.nextNode();
				//得到该节点的子节点列表
				NodeList childList = node.getChildren();
				//孩子节点为空,说明是值节点
				if (null == childList)
				{
					//得到值节点的值
					String result = node.toPlainTextString();
					//若包含关键字,则简单打印出来文本
					if (result.indexOf(keyword) != -1)
						System.out.println(result);
				} //end if
				//孩子节点不为空,继续迭代该孩子节点
				else 
				{
					processNodeList(childList, keyword);
				}//end else
			}//end wile
		}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值