爬虫导入
2016-03-29 18:22
211 查看
新东家还没开放所有权限,因此就临时接了一位同学手上的小工具活,功能是从某网站抓取数据并导入比对。场景看属于最简单的,直接reponse回来就能解析获取了。小工具用的是jsoup,相关材料也很多。(一开始先把原来的netbean工程改成eclipse,强迫症)
(一)主要抓取流程
(二)导入碰到的问题
数据抓取后,原先是通过poi生成xls再导入。但是有个问题,解析用的是split(“xxx”) 拆分预处理生成的由分隔符拼接的字符串,但是该方法默认只会重复匹配n-1次,最后如果出现”\n\n\n”等空字符串拼接的情况该函数只会匹配一次,从而导致返回的列数不对。
【如果需要匹配可以采用split(“\n”,-1)强制匹配到最后一个匹配符得出正确结果】
临时规避方法则是,代码避免生成空字符串或者由于office2007编辑后默认保存为空字符串。具体做法通过poi生成的时候强制设定了单元格格式(避免编辑后由于格式兼容重新设置为空字符串)
生成后或者生成后在编辑保存,不会由于2007格式保存兼容处理默认为空字符串,而是默认的null类型,程序可以识别列数正常导入。
总结,练手验证性能。。。。
(一)主要抓取流程
设置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类型,程序可以识别列数正常导入。
总结,练手验证性能。。。。
相关文章推荐
- 命名规范
- github 代码托管工具
- 【ES6】之 Arrow Function箭头函数
- TestNG 入门
- RecyclerView的上拉加载,下拉刷新
- 好玩的linux命令
- angular先加载页面再执行事件,特别在动态生成id,然后做echarts等图表
- Qt自定义委托在QTableView中绘制控件、图片、文字(内容比较全)
- BZOJ1218 [HNOI2003] 激光炸弹
- 第五周技术博客
- noip2002 矩形覆盖
- JFinal+maven+freemarker入门教程
- FFmpeg的一些关键的数据结构(二)
- Mockito:一个强大的用于Java开发的模拟测试框架
- Python 实现简单的爬虫功能并保存到本地
- Nginx 500错误总结
- GCD 之线程死锁
- JVM远程DEBUG(JPDA )
- 运维监控报警短信功能 可否实现部分重要业务升级为电话的方式?
- 关于屏幕适配问题的解决方案