java中怎么利用jsoup爬取数据并解析
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,java中怎么利用jsoup爬取数据并解析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.首先分析下要爬的数据 :a.
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
软件开发外包期末试卷
数据库和服务器不符合怎么办
access数据库 论坛
天津惠普服务器维修哪家便宜
北邮网络技术研究院 信安
中国食品安全资源数据库
国家网络安全宣传短篇小说
关于网络安全法的宣传报道
太原市网络安全宣传
王者荣耀删除服务器可以吗
全球网络安全知识大赛
股票点买软件开发
第三届丝绸之路网络安全
河南信息化软件开发参考价格
信创数据库入围名单 2021
桓台制造业软件开发
edusoho数据库
刑事网络安全与执法包括什么
苹果软件开发麻烦吗
软件开发书推荐
服务器管理地址和业务地址
南宁系统软件开发
居民社区展示网站需要服务器么
数据库文件的后缀名是dbf
苹果定位服务器要不要关掉
数据库应用系统在经济学中的实例
上海无风扇工控机服务器
微信加人软件开发多少钱
数据库管理系统课程设计
软件开发灾难