热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springboot+quartz+jsoup+kafka

最近在学习springboot,光看官方文档比较枯燥,于是想用一个项目把各种框架和技术串联起来,思来想去觉得爬虫是一个不错的idea。大概思路是这样:固定频率去爬取新浪财经的头条新

最近在学习springboot,光看官方文档比较枯燥,于是想用一个项目把各种框架和技术串联起来,思来想去觉得爬虫是一个不错的idea。

大概思路是这样:固定频率去爬取新浪财经的头条新闻,爬到的标题和链接以json方式推到kafka的topic中,再通过ELK消费,在kibana中查看。

首先通过Spring Initializr下载一个demo工程,选择我们需要的依赖包,jsoup的包需要额外添加。

《springboot+quartz+jsoup+kafka》

引入到idea中,修改pom文件,加入jsoup依赖,由于习惯了使用jetty作为web容器,所以把tomcat踢掉,引入jetty的依赖,为了方便处理json,引入fastjson依赖。

《springboot+quartz+jsoup+kafka》

quartz的使用可以参考官网文档,这里我们通过mysql来持久化定时任务相关信息,涉及到mysql,顺便把mybatis和druid依赖也一起引入。

《springboot+quartz+jsoup+kafka》

quartz相关表的sql在官网的demo里可以找到,这里就略过,假设表已建好。springboot提供了很好的quartz支持,自动配置了一个Scheduler,直接Autowired就可以使用,我们新建一个Service,在系统启动的时候启动爬取新闻的定时任务,代码如下:

《springboot+quartz+jsoup+kafka》

假设每30分钟爬取一次,我们还需要一个Job实现类,来完成具体的爬取任务,也可以通过不同的job来分别爬取,这里就不展开了。Job实现类如下:

《springboot+quartz+jsoup+kafka》

在爬网页之前先看一下每个页面的结构,以新浪财经为例,地址:https://finance.sina.com.cn/,查看页面结构可以发现,我们需要的头条新闻都在“m-hdline”这个class的a标签下,jsoup的使用比较简单,根据需要查找对应的文档就可以了,直接上代码:

《springboot+quartz+jsoup+kafka》

接下来需要将获取到的数据发到kafka的topic中,我的win10是家庭版,天生不带docker,我又懒得折腾toolbox,于是搞了个自带的ubuntu虚拟机,直接下载kafka安装,然后创建一个topic:financenews。这时候可以将kafka的信息配置在我们的工程中,如下:

《springboot+quartz+jsoup+kafka》

springboot也贴心的为我们准备了KafkaTemplate,Autowired即可。这里我们还没有搭建好elk,可以使用直接监听定时任务发送到的topic中的消息是否正常。

《springboot+quartz+jsoup+kafka》

最后在job中添加发送消息到kafka的处理:

《springboot+quartz+jsoup+kafka》

代码到这里基本差不多了,下面我们启动应用看看效果:

《springboot+quartz+jsoup+kafka》

《springboot+quartz+jsoup+kafka》

成功。


推荐阅读
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 如何使用 `org.apache.tomcat.websocket.server.WsServerContainer.findMapping()` 方法及其代码示例解析 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • 基于Java和SSM框架的志愿者管理平台源代码分析与实现
    本研究针对基于Java和SSM框架的志愿者管理平台进行了详细的源代码分析与实现。该平台属于Java Web项目,采用Java EE技术栈,并结合了Spring、Spring MVC和MyBatis三大核心框架(非开源)。项目名称为“基于SSM的志愿者管理系统”,旨在提升志愿者管理的效率和规范性。通过对系统架构、模块设计及关键代码的深入解析,本文为开发者提供了全面的技术参考和实践指导。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 优化后的标题:利用 jQuery 实现高效树形结构元素选择与操作
    在Web前端开发中,DOM结构本质上是一种树形结构。通过优化后的jQuery选择器,可以高效地选择和操作DOM树中的节点。这些选择器不仅简化了代码编写,还提高了性能和可维护性。本文将详细介绍如何利用jQuery的树形选择器实现高效的元素选择与操作。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
author-avatar
无心少年丶的诱惑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有