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
}
}
从一个页面出发获取指定关键字
最新推荐文章于 2021-02-13 09:48:00 发布