以下方法读取一个html格式的String,然后把其中的table内容读出,存入一个Arralyst, 该list装入的是String[], 即每一个String[]元素代码table的一行。
private List parseTable(String htmlStr) throws SAXException, IOException {
Reader reader = new StringReader(htmlStr);
InputSourceImpl inputSource = new InputSourceImpl(reader,
"aaa");
UserAgentContext uacontext = new SimpleUserAgentContext();
DocumentBuilderImpl builder = new DocumentBuilderImpl(uacontext);
Document d = builder.parse(inputSource);
HTMLDocumentImpl document = (HTMLDocumentImpl) d;
NodeList nl=document.getElementsByTagName("table");
ArrayList<String[]> records=new ArrayList<String[]>();
for (int i = 0; i < nl.getLength(); i++) {
HTMLTableElementImpl table=(HTMLTableElementImpl)nl.item(i);
HTMLCollection rows=table.getRows();
for (int j = 0; j < rows.getLength(); j++) {
HTMLTableRowElementImpl row =(HTMLTableRowElementImpl)rows.item(j);
HTMLCollection cells=row.getCells();
ArrayList<String> cellsStr=new ArrayList<String>();
for (int k = 0; k < cells.getLength(); k++) {
HTMLTableCellElementImpl cell =(HTMLTableCellElementImpl)cells.item(k);
cellsStr.add(cell.getTextContent().toString());
}
records.add(cellsStr.toArray(new String[0]));
}
}
return records;
}
由于要解析js,必须要用到Mozzila的rhino包。听说可以禁用js的解析,目前我还不知道如何做,没有仔细查API, 有知道的朋友说一声。
附一个,由于需要足够大的DropBox空间,如果你也正好需要一个DropBox,请使用我的邀请码注册。很实用的免费文件网盘DropBox 可以访问了。