重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“jsoup怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jsoup怎么用”吧!
创新互联建站服务项目包括茂南网站建设、茂南网站制作、茂南网页制作以及茂南网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,茂南网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到茂南省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
jsoup是一款Java的HTML解析器,可以从html中解析数想要的数据,是用java写爬虫必备的工具。
自从有了这个工具后,我博客一切数据尽收眼底,每天看着这数据一点点的变化,还是蛮有成就感、蛮开心的呢 !!
秀完该告诉大家如何做的,首先你得有台能执行定时任务的主机,云主机或者你卧室的主机都可以,然后得有个数据库,至于整体功能其实就是一个简单的增删改查。哦 不对,只有增查没有删改,数据展示的话我用了蚂蚁金服开源的可视化库antv g2,我用的3.8 bug很多不推荐,推荐使用highchart。
我认为其中比较复杂的部分应该是html数据解析的部分,这部分后面我会直接把我代码告诉你。其次就是数据库的存储和查询,我用spring-boot搭了个web服务,用了spring-boot-starter-quartz写了每天晚上11:55的定时任务,用mybatis-spring-boot-starter来读写数据库。
html的解析代码,需要看懂csdn博客页的html布局,然后逐渐调试获取数据,当然csdn官方一改版,代码就执行不了了,所幸这种致命性改版频率不会特别高,这大半年我就遇到过2-3次,代码如下,可以直接拿来用,把url换成自己博客url就可以了。
public class CommonUtils { private static Logger log = LoggerFactory.getLogger(CommonUtils.class); private static Mapheaders; static { headers = new HashMap<>(); headers.put("referer", "https://www.google.com/"); headers.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0" + ".4183.83 Safari/537.36"); } public static BlogInfoDao getBlogInfo() { int retry = 3; while (--retry > 0) { try { BlogInfoDao blogInfoDao = new BlogInfoDao(); blogInfoDao.setDate(new Date()); Document doc = Jsoup.connect("https://blog.csdn.net/xindoo").headers(headers).get(); Element blogElement = doc.getElementsByClass("data-info d-flex item-tiling").get(0); // 文章数量 int articleCnt = Integer.parseInt(blogElement.getElementsByTag("dl").get(0).attr("title")); blogInfoDao.setArticleCnt(articleCnt); // 周排名 int wranking = Integer.parseInt(blogElement.getElementsByTag("dl").get(1).attr("title")); blogInfoDao.setWranking(wranking); // 总排名 int ranking = Integer.parseInt(blogElement.getElementsByTag("dl").get(2).attr("title")); blogInfoDao.setRanking(ranking); // 总阅读量 int viewCnt = Integer.parseInt(blogElement.getElementsByTag("dl").get(3).attr("title")); blogInfoDao.setViewCnt(viewCnt); blogElement = doc.getElementsByClass("data-info d-flex item-tiling").get(1); // 总积分 int scoreCnt = Integer.parseInt(blogElement.getElementsByTag("dl").get(0).attr("title")); blogInfoDao.setScore(scoreCnt); // 粉丝数量 int fansCnt = Integer.parseInt(blogElement.getElementsByTag("dl").get(1).attr("title")); blogInfoDao.setFansCnt(fansCnt); // 点赞量 int likeCnt = Integer.parseInt(blogElement.getElementsByTag("dl").get(2).attr("title")); blogInfoDao.setLikeCnt(likeCnt); // 评论量 int commentCnt = Integer.parseInt(blogElement.getElementsByTag("dl").get(3).attr("title")); blogInfoDao.setCommentCnt(commentCnt); // 收藏量 int collectCnt = Integer.parseInt(blogElement.getElementsByTag("dl").get(4).attr("title")); blogInfoDao.setCollectCnt(collectCnt); return blogInfoDao; } catch (Exception e) { log.error("get bloginfo error, {}", e); } } return null; } }
blogInfoDao是我封装的用来和数据库交互的类,没啥内容这里就不再贴了。
到此,相信大家对“jsoup怎么用”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!