springboot+quartz+jsoup+kafka

最近在學習springboot,光看官方文檔比較枯燥,因而想用一個項目把各類框架和技術串聯起來,思來想去以爲爬蟲是一個不錯的idea。mysql

大概思路是這樣:固定頻率去爬取新浪財經的頭條新聞,爬到的標題和連接以json方式推到kafka的topic中,再經過ELK消費,在kibana中查看。web

首先經過Spring Initializr下載一個demo工程,選擇咱們須要的依賴包,jsoup的包須要額外添加。spring

image

引入到idea中,修改pom文件,加入jsoup依賴,因爲習慣了使用jetty做爲web容器,因此把tomcat踢掉,引入jetty的依賴,爲了方便處理json,引入fastjson依賴。sql

image

quartz的使用能夠參考官網文檔,這裏咱們經過mysql來持久化定時任務相關信息,涉及到mysql,順便把mybatis和druid依賴也一塊兒引入。docker

image

quartz相關表的sql在官網的demo裏能夠找到,這裏就略過,假設表已建好。springboot提供了很好的quartz支持,自動配置了一個Scheduler,直接Autowired就可使用,咱們新建一個Service,在系統啓動的時候啓動爬取新聞的定時任務,代碼以下:json

image

假設每30分鐘爬取一次,咱們還須要一個Job實現類,來完成具體的爬取任務,也能夠經過不一樣的job來分別爬取,這裏就不展開了。Job實現類以下:ubuntu

image

在爬網頁以前先看一下每一個頁面的結構,以新浪財經爲例,地址:https://finance.sina.com.cn/,查看頁面結構能夠發現,咱們須要的頭條新聞都在「m-hdline」這個class的a標籤下,jsoup的使用比較簡單,根據須要查找對應的文檔就能夠了,直接上代碼:tomcat

image

接下來須要將獲取到的數據發到kafka的topic中,個人win10是家庭版,天生不帶docker,我又懶得折騰toolbox,因而搞了個自帶的ubuntu虛擬機,直接下載kafka安裝,而後建立一個topic:financenews。這時候能夠將kafka的信息配置在咱們的工程中,以下:springboot

image

springboot也貼心的爲咱們準備了KafkaTemplate,Autowired便可。這裏咱們尚未搭建好elk,可使用直接監聽定時任務發送到的topic中的消息是否正常。mybatis

image

最後在job中添加發送消息到kafka的處理:

image

代碼到這裏基本差很少了,下面咱們啓動應用看看效果:

image

image

成功。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息