只会一点java

java持续学习者,每月一篇博客。罗列出技术栈,慢慢完善,持续学习,总有一天,你会追上甚至超越曾经的大神。
随笔 - 156, 文章 - 0, 评论 - 471, 阅读 - 124万
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

基于Redis的爬虫平台的实现

Posted on   只会一点java  阅读(1915)  评论(8编辑  收藏  举报

 

正文

一、需求:

1.数据抓取:目标数据的下载、解析、入库功能。

2.数据服务:黑名单、灰名单等查询服务。

3.平台监控:平台各个模块的数据实时监控。

二、WEB端效果展示:

三、架构设计

下载器、解析器、持久器、调度器都支持独立部署,可横向拓展部署多台服务。解耦。

下载器内部开启多线程下载;

解析器从待解析队列取数据,分支抽链、解析;

调度器和持久器都放在web工程中,项目启动时抓取任务初始化+持久器任务开启。

下载器、解析器、调度器、持久器都依赖于底层基础DAO服务。

四、技术选型

1.下载器和解析器:尝试过很多种,Jsoup、Jspider、Xpath、httpclient、HtmlUnit等。基本功能都可以。Jsoup可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。Jsoup的强大选择器最终让我选择了它。

2.生产消费介质:这里有很多种:消息队列MQ、缓存容器redis等都可以胜任。作为一次练手,采用单台redis作为消费介质(内部串行执行),可避免多线程并发问题,数据结构为list。

 

 

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示