zhangpeng 2011-02-22
要做个信息查询,需要从别的网站提取一些信息,获取整个网页以后发现想要的内容是一个table,需要取出table每行每单元格的内容,变成自己想要的格式,使用第三方控件HTMLParser来完成。
下载地址:http://htmlparser.sourceforge.net/
StringstrUrl="http://www.baidu.com";(需要查询的网站,这里举例随便的)
URLurl=newURL(strUrl);
//输入流
InputStreamReaderisr=newInputStreamReader(url.openStream());
BufferedReaderbr=newBufferedReader(isr);
//获取html转换成String
Strings;
StringAllContent="";
while((s=br.readLine())!=null)
{
AllContent=AllContent+s;
}
//使用后HTMLParser控件
ParsermyParser;
NodeListnodeList=null;
myParser=Parser.createParser(AllContent,"utf-8");
NodeFiltertableFilter=newNodeClassFilter(TableTag.class);
OrFilterlastFilter=newOrFilter();
lastFilter.setPredicates(newNodeFilter[]{tableFilter});
try{
//获取标签为table的节点列表
nodeList=myParser.parse(lastFilter);
//循环读取每个table
for(inti=0;i<=nodeList.size();i++){
if(nodeList.elementAt(i)instanceofTableTag){
TableTagtag=(TableTag)nodeList.elementAt(i);
TableRow[]rows=tag.getRows();
//循环读取每一行
for(intj=1;j<rows.length;j++){
TableRowtr=(TableRow)rows[j];
TableColumn[]td=tr.getColumns();
//读取每行的单元格内容
for(intk=0;k<td.length;k++){
System.out.print(td[k]..getStringText());//(按照自己需要的格式输出)
}
}
}
}
}catch(ParserExceptione){
e.printStackTrace();
}