java中怎么利用jsoup爬取数据并解析
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,java中怎么利用jsoup爬取数据并解析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.首先分析下要爬的数据 :a.
千家信息网最后更新 2024年11月12日java中怎么利用jsoup爬取数据并解析
java中怎么利用jsoup爬取数据并解析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1.首先分析下要爬的数据 :
a.获取到请求考勤的接口 ,网站开发工具就能抓到比较顺利(这里我登录没有搞定,迂回了一下。后面会记录实现方式)
b.分析数据格式,简单的html-table表格 nice!
二 、 获取考勤数据并整理输出到excel
这里爬数据我用了jsoup ,处理数据用了dom4j
maven引入
org.jsoup jsoup 1.12.1 dom4j dom4j 1.6.1
代码如下:
/** * 模拟请求获取数据 * * @param userId 用户id * @param date 日期 */ @Override public ListgetPunchList(Integer userId, String date) throws Exception { UserBean user = userMapper.getUser(userId);//拼装请求地址、参数和必要的请求头信息 StringBuilder url = new StringBuilder(); url.append("http://xxxxxx.com/newkaoqin?userid="); url.append(userId); url.append("&seldate="); url.append(date); Connection con2 = Jsoup.connect(url.toString()); con2.header("User-Agent", USER_AGENT); con2.header("Host", HOST); con2.header("Referer", REFERER); con2.header("Cookie", getCookie()); Response response = con2.ignoreContentType(true).method(Method.GET).execute();//处理返回的数据 String body = response.body(); Document doc = Jsoup.parse(body);//定位到要解析的位置 选择器可以任意选择。 Elements tab2 = doc.getElementsByClass("tab2");//因为后面有很多无用数据,我们只用第一个所以获取第一个数据 Element first = tab2.first();// first可能为空 Elements tr = first.select("tr");//处理数据 KaoQinData 是考勤数据的实体。统计后返回实体的集合 List kaoQinData = new ArrayList<>(); KaoQinData kaoQin; for (Iterator cit = tr.iterator(); cit.hasNext(); ) { Element tr1 = cit.next(); Elements td = tr1.select("td"); if (td.size() > 0) { Element punchDateEle = td.get(0); String punchDateStr = punchDateEle.text(); Element punchTimeEle = td.get(4); String punchTimeStr = punchTimeEle.text(); if (!StringUtils.isEmpty(punchTimeStr)) { String substring = punchTimeStr.substring(0, punchTimeStr.indexOf(":")); Integer integer = Integer.valueOf(substring); if (integer >= 20) { System.out.println(punchDateStr + "," + punchTimeStr); kaoQin = new KaoQinData(user.getRealName(), punchDateStr, punchTimeStr); kaoQinData.add(kaoQin); } } } } return kaoQinData; }
这里基本上就差不多了。输出excel什么的。随便啦 喜欢用什么就用什么;
附:顺便说一下,我因为没有搞定自动登录获取cookie,偷巧迂回了一下,
1.在项目中创建了一个文件专门存放cookie,像这样:
2.因此写了一个接口用来更新cookie的接口,把新的cookie写上去覆盖cookie文件。
3.使用的时候获取cookiefile文件内的cookie。(有点麻烦,后面有空再研究下自动登录)
/** * 获取coockie. * @return * @throws IOException */ private String getCookie() throws IOException { int num; char[] buf = new char[1024]; File file = new File(COOKIE_FILEPATH); if (!file.exists()) { file.createNewFile(); } FileReader fileReader = new FileReader(file.getPath()); StringBuilder stringBuilder = new StringBuilder(); while ((num = fileReader.read(buf)) != -1) { stringBuilder.append(buf, 0, num); } return stringBuilder.toString(); }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
数据
接口
文件
处理
登录
考勤
实体
分析
帮助
输出
迂回
选择
清楚
必要
差不多
代码
位置
内容
参数
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中学生网络安全班会图片
jsp在线书店数据库
12月网络安全日
数据库新增用户
如何对服务器进行检测
数据库零售销售系统设计论文
杨浦租房软件开发
传奇服务器哪里买好
江西公安信息网络安全手册
网络安全股票 源
服务器怎么识别cpu型号
vb sql数据库恢复
亚普路卡北京网络技术有限公司
网络安全审核专员
数据库删除表里数据
剑三最近登录服务器
网络安全监控是电子围栏么
软件开发公司部门设置
网络安全与舆情管理制度
海南逸鑫网络技术有限公司骗局
国外免实名服务器
安新软件开发项目管理
阿里云服务器学生价购买
tp 多数据库
宠物管理系统数据库
网络安全三级系统中
人民日报关于网络安全的文章
自考计算机网络技术2018
众筹 软件开发
格拉斯哥软件开发硕士正规吗