爬虫导入

来源:互联网 发布:拼接视频的软件 编辑:程序博客网 时间:2024/05/16 14:43

新东家还没开放所有权限,因此就临时接了一位同学手上的小工具活,功能是从某网站抓取数据并导入比对。场景看属于最简单的,直接reponse回来就能解析获取了。小工具用的是jsoup,相关材料也很多。(一开始先把原来的netbean工程改成eclipse,强迫症)

(一)主要抓取流程

设置url ,请求方式get或者post等int requestType = rule.getRequestMoethod();Connection conn = Jsoup.connect(url);设置参数conn.data(params[i], values[i]);获取返回页面doc对象doc = conn.timeout(5000).get();//根据实际情况post或者get等等其他解析,简单列举了几个,基本就是dom的操作了,非常简洁~results = doc.getElementsByClass(resultTagName);results = doc.getElementsByTag("body");Elements links = result.getElementsByTag("td");



(二)导入碰到的问题

数据抓取后,原先是通过poi生成xls再导入。但是有个问题,解析用的是split(“xxx”) 拆分预处理生成的由分隔符拼接的字符串,但是该方法默认只会重复匹配n-1次,最后如果出现”\n\n\n”等空字符串拼接的情况该函数只会匹配一次,从而导致返回的列数不对。

【如果需要匹配可以采用split(“\n”,-1)强制匹配到最后一个匹配符得出正确结果】

临时规避方法则是,代码避免生成空字符串或者由于office2007编辑后默认保存为空字符串。具体做法通过poi生成的时候强制设定了单元格格式(避免编辑后由于格式兼容重新设置为空字符串)

          <pre name="code" class="java">HSSFCellStyle cellStyle = hwb.createCellStyle();cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框设置单元格格式item.setCellStyle(cellStyle);item.setCellValue(new HSSFRichTextString(descs[j]));



生成后或者生成后在编辑保存,不会由于2007格式保存兼容处理默认为空字符串,而是默认的null类型,程序可以识别列数正常导入。


总结,练手验证性能。。。。

    

0 0