摘要:最近在學習,光看官方文檔比較枯燥,于是想用一個項目把各種框架和技術(shù)串聯(lián)起來,思來想去覺得爬蟲是一個不錯的。大概思路是這樣固定頻率去爬取新浪財經(jīng)的頭條新聞,爬到的標題和鏈接以方式推到的中,再通過消費,在中查看。
最近在學習springboot,光看官方文檔比較枯燥,于是想用一個項目把各種框架和技術(shù)串聯(lián)起來,思來想去覺得爬蟲是一個不錯的idea。
大概思路是這樣:固定頻率去爬取新浪財經(jīng)的頭條新聞,爬到的標題和鏈接以json方式推到kafka的topic中,再通過ELK消費,在kibana中查看。
首先通過Spring Initializr下載一個demo工程,選擇我們需要的依賴包,jsoup的包需要額外添加。
引入到idea中,修改pom文件,加入jsoup依賴,由于習慣了使用jetty作為web容器,所以把tomcat踢掉,引入jetty的依賴,為了方便處理json,引入fastjson依賴。
quartz的使用可以參考官網(wǎng)文檔,這里我們通過mysql來持久化定時任務(wù)相關(guān)信息,涉及到mysql,順便把mybatis和druid依賴也一起引入。
quartz相關(guān)表的sql在官網(wǎng)的demo里可以找到,這里就略過,假設(shè)表已建好。springboot提供了很好的quartz支持,自動配置了一個Scheduler,直接Autowired就可以使用,我們新建一個Service,在系統(tǒng)啟動的時候啟動爬取新聞的定時任務(wù),代碼如下:
假設(shè)每30分鐘爬取一次,我們還需要一個Job實現(xiàn)類,來完成具體的爬取任務(wù),也可以通過不同的job來分別爬取,這里就不展開了。Job實現(xiàn)類如下:
在爬網(wǎng)頁之前先看一下每個頁面的結(jié)構(gòu),以新浪財經(jīng)為例,地址:https://finance.sina.com.cn/,查看頁面結(jié)構(gòu)可以發(fā)現(xiàn),我們需要的頭條新聞都在“m-hdline”這個class的a標簽下,jsoup的使用比較簡單,根據(jù)需要查找對應(yīng)的文檔就可以了,直接上代碼:
接下來需要將獲取到的數(shù)據(jù)發(fā)到kafka的topic中,我的win10是家庭版,天生不帶docker,我又懶得折騰toolbox,于是搞了個自帶的ubuntu虛擬機,直接下載kafka安裝,然后創(chuàng)建一個topic:financenews。這時候可以將kafka的信息配置在我們的工程中,如下:
springboot也貼心的為我們準備了KafkaTemplate,Autowired即可。這里我們還沒有搭建好elk,可以使用直接監(jiān)聽定時任務(wù)發(fā)送到的topic中的消息是否正常。
最后在job中添加發(fā)送消息到kafka的處理:
代碼到這里基本差不多了,下面我們啟動應(yīng)用看看效果:
成功。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/77746.html
摘要:最近在學習,光看官方文檔比較枯燥,于是想用一個項目把各種框架和技術(shù)串聯(lián)起來,思來想去覺得爬蟲是一個不錯的。大概思路是這樣固定頻率去爬取新浪財經(jīng)的頭條新聞,爬到的標題和鏈接以方式推到的中,再通過消費,在中查看。 最近在學習springboot,光看官方文檔比較枯燥,于是想用一個項目把各種框架和技術(shù)串聯(lián)起來,思來想去覺得爬蟲是一個不錯的idea。 大概思路是這樣:固定頻率去爬取新浪財經(jīng)的頭...
摘要:三實踐案例案例簡介分布式系統(tǒng)中,微服務(wù)基礎(chǔ)組件等,系統(tǒng)中間件,等,對常用功能配置等,進行二次淺封裝并統(tǒng)一集成管理,以滿足日常開發(fā)中基礎(chǔ)環(huán)境搭建與臨時工具的快速實現(xiàn)。 一、背景簡介 分布式系統(tǒng)中存在很多拆分的服務(wù),在不斷迭代升級的過程中,會出現(xiàn)如下常見的棘手情況: 某個技術(shù)組件版本升級,依賴包升級導致部分語法或者API過期,或者組件修復緊急的問題,從而會導致分布式系統(tǒng)下各個服...
摘要:本文使用實現(xiàn)對定時任務(wù)的增刪改查啟用停用等功能。并把定時任務(wù)持久化到數(shù)據(jù)庫以及支持集群。決定什么時候來執(zhí)行任務(wù)。定義的是任務(wù)數(shù)據(jù),而真正的執(zhí)行邏輯是在中。封裝定時任務(wù)接口添加一個暫停恢復刪除修改暫停所有恢復所有 簡介 Quartz是一款功能強大的任務(wù)調(diào)度器,可以實現(xiàn)較為復雜的調(diào)度功能,如每月一號執(zhí)行、每天凌晨執(zhí)行、每周五執(zhí)行等等,還支持分布式調(diào)度。本文使用Springboot+Myba...
摘要:而我這里定時任務(wù)的觸發(fā)是要通過接口的方式來觸發(fā),所以只用實現(xiàn)以下的調(diào)度器即可。我這里簡單說下任務(wù)的調(diào)度器,具體的任務(wù)類,觸發(fā)器,任務(wù)什么時候執(zhí)行是由它決定的。遇到的坑解決方式這個是因為不兼容的問題,所以使用是不會出現(xiàn)這個錯誤的。 實現(xiàn)定時任務(wù)的幾種方式: 1.使用linux的crontab 優(yōu)點: 1.使用方式很簡單,只要在crontab中寫好 2.隨時可以修改,不需要...
閱讀 1733·2021-10-18 13:30
閱讀 2608·2021-10-09 10:02
閱讀 2964·2021-09-28 09:35
閱讀 2091·2019-08-26 13:39
閱讀 3521·2019-08-26 13:36
閱讀 1950·2019-08-26 11:46
閱讀 1135·2019-08-23 14:56
閱讀 1693·2019-08-23 10:38