日期:2014-05-17 浏览次数:20655 次
?? ?以下方法读取一个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 可以访问了。