使用Cobra解析html, 及其提取table内容的例子。
?? ?以下方法读取一个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 可以访问了。