使用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 可以访问了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值