您好,登錄后才能下訂單哦!
本篇內容主要講解“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 Map<String, String> headers; 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怎么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。