ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于Spring Cloud的全自动化微信公众号消息采集系统

2021-12-07 13:04:16  阅读:119  来源: 互联网

标签:公众 微信 mysql 采集 starter 模块 Spring Cloud


前言

由于公司业务需求,需要获取客户提供的微信公众号的历史文章并每天进行更新,三百多个公众号显然不能通过人工去每天查看,问题提交到了IT组。对于热爱爬虫的我肯定要盘他,之前做过搜狗的微信爬虫,后来一直致力于java web了,这个项目又重新燃起了我对爬虫的热爱,第一次使用spring cloud架构来做爬虫,历时二十多天,终于搞定。接下来,我将通过一系列文章来分享此次项目经历,并奉上源码供大家指正!

一、系统简介

本系统是基于Java开发,可通过简单配置公众号名称或微信号,实现定时或即时抓取微信公众号的文章(包括阅读量、点赞、在看)。

二、系统架构

技术架构

Spring Cloud、SpringBoot、Mybatis-Plus、Nacos、RocketMq、nginx

存储

Mysql、MongoDB、Redis、Solr

缓存

Redis

代理

Fiddler

三、系统优劣性

系统优点

1、配置完公众号后可通过Fiddler的JS注入功能和Websocket实现全自动抓取; 2、系统为分布式架构,具有高可用性; 3、RocketMq消息队列进行解耦,可解决网络抖动导致采集失败情况,若消费三次还未成功则将日志记录到mysql,确保文章的完整性; 4、可加入任意多个微信号提高采集效率和抵抗反爬限制; 5、Redis缓存了每个微信号24小时内采集记录,防止封号; 6、Nacos作为配置中心,可通过热配置实时调整采集频率; 7、将采集到的数据存储到Solr集群,提高检索速度; 8、将抓包返回的记录存储到MongoDB存档便于查看错误日志。

系统缺点:

1、通过真机真号采集消息,如果需要采集大量公众号的话需要有多个微信号作为支撑(若账号当日到了限制,可通过爬取微信公众平台接口获取消息); 2、不是公众号一发文就能马上抓取到,采集时间是系统设定的,消息有一定的滞后(如果公众号不多微信号数量充足可通过提高采集频率优化)。

四、模块简介

由于之后要加入管理系统和API调用功能,提前对一些功能进行了封装。

common-ws-starter

公共模块:存放工具类和实体类等公共消息。

redis-ws-starter

Redis模块:对
spring-boot-starter-data-redis的二次封装,对外暴露封装的Redis工具类和Redisson工具类。

rocketmq-ws-starter

RocketMq模块:对
rocketmq-spring-boot-starter的二次封装,提供消费重试和记录失败日志功能。

db-ws-starter

mysql数据源模块:对mysql数据源进行封装,支持多数据源,自定义注解实现数据源动态切换。

sql-wx-spider

mysql数据库模块:提供了所有对mysql数据库操作的功能。

pc-wx-spider

PC端采集模块:包含PC端采集公众号历史消息相关功能。

java-wx-spider

Java提取模块:包含java程序提取文章内容相关功能。

mobile-wx-spider

模拟器采集模块:包含通过模拟器或手机端采集消息的互动量相关功能。

五、大体流程图

基于Spring Cloud的全自动化微信公众号消息采集系统

六、运行截图

PC和移动端

基于Spring Cloud的全自动化微信公众号消息采集系统

基于Spring Cloud的全自动化微信公众号消息采集系统

控制台

基于Spring Cloud的全自动化微信公众号消息采集系统

基于Spring Cloud的全自动化微信公众号消息采集系统

基于Spring Cloud的全自动化微信公众号消息采集系统

运行结束

基于Spring Cloud的全自动化微信公众号消息采集系统

总结

项目亲测可用现在已经在运行中,并且在项目开发中解决了微信的搜狗临时链接转永久链接问题,希望能对被相似业务困扰的老铁有所帮助。如今做java如逆水行舟,不进则退,不知什么时候就被卷了进去,祝愿每个人都有一本自己的葵花宝典,看到这还不给个收藏吗。

标签:公众,微信,mysql,采集,starter,模块,Spring,Cloud
来源: https://blog.csdn.net/qq_64513388/article/details/121766551

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有