实时文章采集(爱爬虫的人,我肯定要演他!(一))
优采云 发布时间: 2022-03-31 06:19实时文章采集(爱爬虫的人,我肯定要演他!(一))
前言
因公司业务需要,需要获取客户提供的微信公众号历史文章并每天更新。显然,每天300多个微信公众号无法人工检查,问题提交给IT团队。对于喜欢爬虫的人,我一定会玩他。以前在搜狗做微信爬虫,后来一直在做java web。这个项目重新点燃了我对爬行动物的热爱。第一次用Spring Cloud架构做爬虫用了20多天,终于搞定了。接下来我会通过一系列文章来分享这个项目的经验,并给出源码供大家指正!
一.系统介绍
本系统是基于Java开发的。只需配置微信公众号名称或微信ID,即可定期或实时捕捉公众号上的文章(包括阅读量、点赞量、阅读量)。
二、系统架构
技术架构
春云、Rebound、Mibatis-Plus、Nacos、RocketMq、nginx
保存
Mysql、MongoDB、Redis、Solr
缓存
评论
机制
小提琴家
三、系统的优缺点
系统优势
1.微信公众号配置后,可以通过Fiddler和Websocket的JS注入功能自动捕获;2.系统为分布式架构,高可用;3.Rocket Mq消息队列解决方案Coupling可以解决网络抖动导致的采集失败。如果3次消费不成功,会在mysql中记录日志,保证文章的完整性;4.可以添加任意数量的微信号,提高采集的效率,抵抗反爬限制;5.Redis缓存每个微信24小时内采集到的记录,防止上头条;6.Nacos作为配置中心,可以通过热配置实时调整采集的频率;< @7.将采集到的数据存储在 Solr 集群中,用于更快的检索;8.将捕获数据包返回的记录存储在 MongoDB 存档中以查看错误日志。
系统缺点:
1.从真实设备采集消息。如果需要采集大量微信公众号,需要有多个微信账号作为支撑(当日账号达到上限,可通过抓取微信公众平台界面获取消息);到达。采集时间是系统设定的,消息有一定的滞后性(如果微信公众号不多,可以通过增加采集的频率来优化微信账号数量)。
四.模块介绍
由于后面会添加管理系统和API调用功能,所以提前封装了一些功能。
公共-ws-starter
公共模块:存储工具类、实体类等公共消息。
redis-ws-starter
Redis 模块:
spring-boot-starter-data-Redis的二次封装暴露了封装后的Redis工具类和Redisson工具类。
rockemq-ws-starter
Rocket Mq 模块:用于
Rocket MQ-spring-boot-starter的二次包,提供消费重试和失败日志功能。
db-ws-starter
mysql数据源模块:封装mysql数据源,支持多数据源,通过自定义注解实现数据源的动态切换。
sql-wx-蜘蛛
mysql数据库模块:提供操作mysql数据库的所有功能。
pc-wx-蜘蛛
PC端采集模块:包括微信公众号历史消息PC端采集的相关功能。
java-wx-蜘蛛
Java 提取模块:收录与从 Java 程序中提取 文章 内容相关的函数。
移动 wx 蜘蛛
模拟器采集模块:包括通过模拟器或手机采集进行信息交互相关的功能。
Verb(动词的缩写)通用流程图
六、运行截图
个人电脑和手机
安慰
运行结束
总结
项目的亲测现已投入运行,在项目开发中解决了微信在搜狗上的临时链接到永久链接的问题。希望对被类似业务困扰的老铁有所帮助。现在,做java就像逆水行舟。不进则退。不知道什么时候会涉及。我希望每个人都有自己的向日葵系列。看到这个你不喜欢吗?