java 读html

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();

}

相关推荐