java中怎么利用jsoup爬取数据并解析
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,java中怎么利用jsoup爬取数据并解析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.首先分析下要爬的数据 :a.
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
mac连接远程服务器热键问题
网络安全第四章内容
收银软件开发商
移动网络安全设备成功案例
西外网络技术
网络技术利大于弊
常州互联网科技创新团队
航天a6数据库升级
中国电信的网络是租用的服务器吗
易江网络技术室
朝阳区网络技术咨询售后服务
网络技术算是什么专业
ae安装失败无法访问服务器
数据库登录时 服务器名称
战地1怎么选服务器
小七网络安全
文献数据库注册
西方给乌克兰提供网络技术和设备
网狐荣耀数据库表
数据库字段按列查询
手机连商场开放网络安全吗
阿里云 服务器 被加密
安全狗是安装在服务器上吗
网安大队宣传网络安全知识
目前的网络安全吗
光明区网络技术进出口包括什么
网络安全教育2 隐秘的威胁
服务器自动开关机怎么固定时间
开软件网络安全好吗
网络数据库大纲